2014-11-23 10 views
8

Kafamı, bx lr'nin ne yaptığını ve bl (etiket) 'den nasıl farklılaştığını göremiyorum. Bl (label) 'in bağlantı kaydındaki o işlevin dönüş adresini sakladığını biliyorum ama bx lr'nin ne yaptığını bilmiyorum.Bx lr ARM assembly dilinde ne yapar?

cevap

16

bx adresin lsb (en önemsiz biti) 'e göre, işlemci ARM olarak veya başparmak gibi bir sonraki talimat ele alacağız dalına anlamına gelir Hangi branch and exchange instruction set simgeler.

lr genellikle iade adresini tutar, bu bir işlevden bir dönüş olduğu anlamına gelir ve lr lsb değeri 1 ise, bu adreste kodu başa olarak ele alır, aksi halde KOL.

+0

Bu açıklamayı daha da basitleştirebilir misiniz, ARM mimarisi hakkındaki bilgim o kadar gelişmiş değil. – user2177940

+0

https://en.wikipedia.org/wiki/ARM_architecture#Thumb – MByD

+4

@ user2177940 Bölüm 1: Mod Anahtarı. Bir ARMv7 CPU, talimat kodlamasında farklı olan iki moddan birinde (Çağrılı ARM veya Başparmak) çalışır (özellikle "tam" fakat büyük 4 bayt komutları ile "sınırlı", ancak küçük 2 bayt komutları). Bir sonraki moda geçmek için **, bx/blx' ** ile arama sırasında, atlanacak adresin çift mi yoksa tek mi olduğuyla belirlenir (bu, sırasıyla, ARM veya Thumb moduna geçiş yapar). –