Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, "Sıfırdan ARM Öğreniyorum" serisinin ikinci bölümü olup, bir eğitmen tarafından sunulan ARM mimarisi ve programlama konularını içeren bir eğitim içeriğidir.
- Video, ARM mimarisinin temel kavramlarını hatırlatarak başlayıp, program, model, adres modları, shift operasyonları ve conditional istila gibi konuları ele almaktadır. Ardından load ve store instructionları, ofset kullanımı, pre-index ve post-index kavramları, shift operasyonları, aritmetik lojik birim (ALU) ve karşılaştırma instructionları detaylı şekilde anlatılmaktadır. Son bölümde ise mikrodenetleyici programlama için başlangıç kodunun nasıl oluşturulacağı, register işlemleri ve örnek problemler üzerinden programlama konuları adım adım gösterilmektedir.
- Video, ARM işlemcilerinin üç aşamalı (fetch, decode, execute) çalışma prensibini, memory map yapısını ve immed ile index adres modları arasındaki farkları örneklerle açıklamaktadır. Ayrıca izleyicilerin kendi alıştırmalarını yapabilecekleri bir dosya paylaşıldığı belirtilmektedir.
- 00:05ARM Öğrenme Serisinin İkinci Bölümü
- Sıfırdan ARM öğrenme serisinin ikinci bölümüne giriş yapılıyor.
- Geçen bölümde ARM mimarisi, mikroişlemci ve mikro kontrol farkları, instruction set, registerler ve basit instructionların özellikleri anlatılmıştı.
- Bu bölümde program, model, adres modları, shift operasyonları, conditional ve comp istila larından bahsedilecek ve örnekler çözülecek.
- 01:14ARM İşlemcinin Çalışma Aşamaları
- ARM tabanlı işlemciler üç aşamadan oluşur: fetch (fethed), decode (okuma) ve execute (yürütme).
- Fetch aşamasında kodun gerekli adresi alınır, decode aşamasında kodun ne olduğu ve hangi aşamalardan geçeceği anlamlandırılır.
- Execute aşamasında kod çalıştırılır ve bu işlem tekrarlanarak yeni kod almak için fetch aşamasına dönülür.
- 02:04Pipe Line ve Memory Map
- Pipe line, her cycle'da bir sonraki instruction ile ilgili işlem yaparak zamandan tasarruf sağlayan bir yapıdır.
- Memory map'te kod memory (programation ve sabit datalar) ve data memory (değişkenler, datalar, operantlar) bulunur.
- Stack, LIFO (last in first out) yapısında bir yapıdır.
- 03:07Adres Modları
- Immediate adres modunda, instruction fethedildikten sonra ekstra memory'ye ulaşmaya gerek kalmadan sabit bir değer kullanılır.
- Index adres modunda, data memory içindeki bir register'ın içeriği memory point olarak tutulur ve ekstra bir clock cycle harcanarak bu register'ın contentine gidilir.
- Örneğin "ldr [r2]" komutunda, önce r2 register'ın içeriğine gidilir, sonra o adresteki değer alınır, bu işlem iki clock cycle gerektirir.
- 04:25Load İşlemleri
- Little end formatta çalışan işlemcide üç çeşit load instruction vardır: LDR (byte), LDR (halfword) ve LDR (word).
- LDR byte, memory'deki dört byte'lık adresin tek baytını alır ve R register'ına atar.
- LDR halfword, memory'deki dört byte'lık adresin yarısını alır ve R register'ına atar.
- LDR word, memory'deki dört byte'lık adresin tamamını alır ve R register'ına atar.
- 05:42Index Formatları
- Load instruction'lar offset ile birlikte kullanılabilir ve pre-index, post-index ve index update formatları vardır.
- Pre-index formatında, R register'ın tuttuğu adresin dört byte üstüne çıkıp değeri alır ve R register'ı günceller.
- Post-index formatında, önce adresi alır ve atar, sonra R register'ın tuttuğu adresi dört birim arttırır.
- Index update formatında, R register'ın tuttuğu yerin dört byte üstüne çıkıp değeri alır, atar ve R register'ı günceller.
- 07:24Store İşlemleri
- Store işlemi, register'dan alınan değeri memory'e yazma işlemidir.
- Store instruction'da da pre-index, post-index ve index update formatları kullanılabilir.
- Post-index formatında, R register'ın tuttuğu adrese değer yazılır ve adres dört byte artarak bir sonraki yere gider.
- Index update formatında, önce offsetli yere yazıp sonra adres güncellenir.
- 09:27Shift Operasyonları
- Kaydırma işlemleri, sayıyı sola veya sağa kaydırarak çarpma veya bölme işlemlerini yapar.
- Sola kaydırma işlemi sayıyı iki ile çarpmak, sağa kaydırma işlemi sayıyı ikiye bölmek demektir.
- Rotate Write Extended (RWR), sağa doğru kaydırıp rakamları geriden çıkan sonucu başa yerleştirir.
- Aritmetik shift, sayının işaret bitini (son bit) shift edip tekrar sağa doğru shift eder.
- Rotator Left (RLO) ve Rotator Right (ROR), shift işlemleri için ayrı hardware olmadan kullanılabilir.
- 10:57ALU ve Karşılaştırma İşlemleri
- ALU (Aritmetik Lojik Birim), işlemcinin içindeki aritmetik işlemleri yapan modülün önünde bulunan bir hard veri olarak düşünülebilir.
- ALU'da shift işlemleri yapılarak, data instructionların içinde önce shift edip sonra toplama işlemi yapılabilir.
- CMP (Compare) işlemi, iki operand arasındaki farkı hesaplar ve sonuç sıfırsa ZF (Zero Flag) aktif olur.
- CMP işlemi sonucu sıfır değilse, karşılaştırılan iki operand eşit değildir.
- CMP işlemi sonucunda değerler korunur, sonuçlar registerlara yazılmaz.
- 13:29Koşullu İşlemler
- Koşullu işlemler, işlem sonucuna göre flag'lerin değişimine bakarak bir koşulda bağlı işlem yapar.
- Koşullu işlemler, kodun üst kısmında yapılan işlemler sonucu flag'lerin aktif olup olmadığına göre çalışır.
- Koşullu işlemler, belirli bir koşul sağlandığında belirli bir instruction'ı çalıştırır, koşul sağlanmazsa bir sonraki satıra geçer.
- 14:20ESP8260'da Başlangıç Kodu Oluşturma
- ESP8200 programında yeni bir kod alanı oluşturmak için "@" işareti ve "mail" yazarak küçük harflerle bir label belirtip programın başlangıç mail programı olduğunu belirtiyoruz.
- Programın bittiğini "end" directive ile belirtiyoruz.
- Başlangıç için gerekli olan dosyayı eklemek için source gruba sağ tıklayıp "add exten files" seçeneğini kullanarak dosya türünü "essm" olarak seçip "startup.s" dosyasını ekliyoruz.
- 15:12Register İşlemleri
- "ldr" komutu ile bir register'a adres değeri atanıyor ve bu register pointer olarak kullanılabiliyor.
- "store" komutu ile bir register'ın içeriği başka bir register'a aktarılıyor.
- Memory adresi açarak register değerlerinin doğru şekilde atandığını kontrol edebiliriz.
- 17:19Çift Operasyonlar
- "logic shift left" komutu ile bir register'ın değeri belirli bir sayıda birim sola çift ediliyor.
- Örneğin, "logic shift left 4" komutu ile bir register'ın değeri 4 birim sola çift edildiğinde, 254'ten 16 ile çarpılmış olur.
- 18:19Örnek Soru Çözümü
- Başlangıç adresleri 40 ve 44 olan iki farklı memur değerini toplayıp 48 nolu adrese yazmak için önce adresleri register'lara atıyoruz.
- Post indeks kullanarak ve offset vererek register'ların içeriğini topluyoruz.
- Toplamın sonucunu 48 nolu adrese kaydediyoruz.
- 21:28İkinci Örnek Soru Çözümü
- Bir register'a sayı atayıp 6 kere sola çift edip 8'e bölmek için önce sayıyı register'a atıyoruz.
- "logical shift left" komutu ile sayıyı 6 kere sola çift ediyoruz.
- "div" komutu ile sayıyı 8'e bölerek sonucu elde ediyoruz.
- 23:37Video Kapanışı
- Videoda çözülen örnekler bu kadardı, daha fazla örnek için açıklama kısmında linkli bir dosya bulunmaktadır.
- Video hakkında görüş ve geri bildirim videonun açıklamalar kısmında belirtilmelidir.
- Video beğenilip paylaşılarak daha fazla kişinin faydalanması sağlanabilir.