| Makine kodu |
|---|
| Genel kavramlar |
|
| Buyruklar |
|
Yineleme buyruğu (tekrarlama buyruğu olarak da anılır; İngilizce: repeat instruction), kendisini izleyen bir buyruğun belirli bir sayıda yinelenmesini sağlayan makine buyruğudur. Açık bir döngü kurmadan donanım düzeyinde yineleme yaptırarak, döngü denetimi için gereken ek dallanma buyruklarını ortadan kaldırır. Örneğin x86 mimarisindeki REP öneki, dizi (string) buyruklarını sayaç yazmacı sıfırlanana kadar yineler.
Tarihçe
Yineleme buyruğu, kendisi de bir buyruk olduğu hâlde başka buyrukların yürütülmesini düzenlediğinden üst buyruk sayılan küçük bir öbeğe girer.
Kavram x86'dan otuz yıl eskidir. Univac 1103 (1953) kendisini izleyen buyruğu belirli bir sayıda yineleyen bir buyruk taşıyordu ve yinelemenin her turunda o buyruğun adres alanlarını artırabiliyordu. Bunun nedeni mimaride dizin yazmacı bulunmamasıydı; adres alanını buyruğun kendisinde artırmak, dizin yazmacının yaptığı işi karşılıyordu.
GE-600 ve ardılı Honeywell 6000 ailesi (1964) üç ayrı biçim sunuyordu: tek bir buyruğun yinelenmesi, iki buyruğun birlikte yinelenmesi ve bağlı liste üzerinde yürüyen yineleme. 8086 ile başlayan x86 ailesi ise yinelemeyi bağımsız bir buyruk olarak değil, yalnızca dizi buyruklarına uygulanabilen bir önek olarak tanımladı.

x86 mimarisinde yineleme önekleri
x86 mimarisinde yineleme, bağımsız bir buyruk değil; dizi buyruklarının önüne eklenen bir önek (prefix) biçiminde tanımlanmıştır. Üç temel önek bulunur:
- REP: CX/ECX/RCX sayaç yazmacı sıfır olmadığı sürece ardından gelen buyruğu yineler; her yinelemede sayaç bir azaltılır. Genellikle
MOVS(bellek kopyalama) veSTOS(bellek doldurma) buyruklarıyla kullanılır. - REPE / REPZ: Hem sayaç sıfır olmadığı sürece hem de sıfır bayrağı (ZF=1) koşulu sağlandığı sürece yineler. Karşılaştırma (compare) ve tarama (scan) buyruklarıyla kullanılır.
- REPNE / REPNZ: Hem sayaç sıfır olmadığı sürece hem de sıfır bayrağı sıfır (ZF=0) olduğu sürece yineler; örneğin
SCASile bir bayt dizisinde belirli bir değer aranabilir.
Dizi (string) buyrukları
Yineleme önekleri, x86'nın bellek-bellek işlemlerine olanak tanıyan dizi buyruklarıyla birlikte anlam kazanır:
MOVS– kaynak adresten hedef adrese bayt/sözcük/çift sözcük kopyalar.STOS– AL/AX/EAX değerini hedef bellek konumuna yazar.LODS– kaynak bellekten AL/AX/EAX'e değer yükler.CMPS– kaynak ve hedef bellek bölgelerini karşılaştırır.SCAS– hedef belleği AL/AX/EAX ile tarar.
SI (ESI/RSI) kaynak ve DI (EDI/RDI) hedef dizin yazmacı her yinelemede yön bayrağına (DF) göre artırılır ya da azaltılır.
Kesilebilirlik
Yinelenen bir dizi işlemi, tamamlanmadan bir kural dışı durum ya da kesme ile askıya alınabilir. Sayaç ile dizin yazmaçları mimarinin görünür durumunda tutulduğundan, kesme işleyicisinden dönüldüğünde işlem kaldığı yerden sürer; baştan başlaması gerekmez. Bu özellik, tek bir buyruğun çok sayıda bellek erişimi yapmasına karşın sayfa hatası gibi olaylarla birlikte çalışabilmesini sağlar.
Sıfır yükümlü döngü
Döngü yükünü donanıma taşıma fikri, sayısal işaret işleyicilerinde mimarinin tanımlayıcı özelliklerinden biri olmuştur. Bu işlemciler döngü sayacını, döngünün başlangıç adresini ve bitiş adresini ayrı yazmaçlarda tutar; böylece döngünün son buyruğu yürütüldüğünde denetim, ayrıca bir dallanma buyruğu getirilip yürütülmeden başa döner. Tek bir buyruğun yinelenmesi ile bir buyruk öbeğinin yinelenmesi çoğu zaman ayrı buyruklarla karşılanır. Texas Instruments'ın TMS320 ailesi 1983'ten bu yana böyle bir düzenek taşır.
Tasarım etkisi
Yineleme buyruğu fikri, döngü yükünü (sayaç azaltma ve koşullu dallanma) donanıma taşıyarak kod yoğunluğunu artırır ve boru hattı dal cezasını azaltabilir. Buna karşılık esnekliği sınırlıdır: yinelenen işlem buyruk kümesinde önceden tanımlanmış birkaç biçimle sınırlıdır ve gövdesi değiştirilemez. Genel amaçlı mimarilerde aynı iş tek buyruk çoklu veri buyruklarıyla ya da döngünün açılmasıyla da yapılabilir; hangisinin daha hızlı olduğu işlemci kuşağına ve veri boyutuna göre değişir.
Günümüzün yaygın yük azaltmalı mimarileri bu yolu seçmemiştir. RISC-V ile ARM'ın temel buyruk kümelerinde yineleme buyruğu bulunmaz; dizi ve vektör işleri, işlenecek öğe sayısının bir yazmaçta tutulduğu vektör buyruklarıyla ya da derleyicinin ürettiği açık döngülerle karşılanır.
Ayrıca bakınız
Kaynakça
- ^ a b c d Tanenbaum, Andrew S. (2013). Structured Computer Organization (6 bas.). Pearson. ISBN 978-0-13-291652-3.
- ^ a b c Blaauw, Gerrit A.; Brooks, Frederick P. (1997). Computer Architecture: Concepts and Evolution. Addison-Wesley. ISBN 978-0-201-10557-5.
- ^ a b "Intel 64 and IA-32 Architectures Software Developer's Manual, Volume 2". Intel Corporation. 2 Haziran 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 31 Mayıs 2026.
- ^ a b Patterson, David A.; Hennessy, John L. (2017). Computer Organization and Design: The Hardware/Software Interface (5 bas.). Morgan Kaufmann. ISBN 978-0-12-407726-3.
