Factorial
MOV R1,#1
CMP R0,#2 // Bu kısım (Burda girilen R0 ile 2 yi kıyaslıyor ama aşağıdaki kısmı neye göre etkiliyor?)
BMI endFactorial
loopFactorial
MUL R1,R0
SUBS R0,#1
BEQ endFactorial // Bu kısım r0 dan 1 çıkararak gitmeyle alakalı ama bu satırı neye göre tetikliyor?)
B loopFactorial
endFactorial
MOV R0,#0
BX LR // Bu kısımİşaretlediğim kısımları bilen birisi anlatabilir mi acaba? Tam olarak ne işe yaradıklarını kavrayamadım.
Assembly Hakkında Temel Sorularım
2
●73
- 08-11-2021, 00:12:01Merhabalar,
- 12-11-2021, 01:29:56Kimlik doğrulama veya yönetimden onay bekliyor.Öncelikle arm bilgim yok ama x86 ya benzediği için anladığım kadarıyla yazdığımı belirteyim.TayfunGuler adlı üyeden alıntı: mesajı görüntüle
CMP R0,#2 // bu kısımda karşılaştırma yapıyor.
BMI endFactorial // bu kısım ise koşullu dallanma, yani "R0" #2 a eşit ise(emin değilim) endFactorial a dallan ve fonksiyonu sonlandır .
BEQ endFactorial // bu kısım da koşullu dallanma, büyük ihtimal "R0" 0 olunca endFactorial kısmına dallanıyor, eğer "R0" 0 değilse B loopFactorial çalışır buda koşulsuz dallanma yani direk dallanır buda "R0" 0 olana kadar döngü oluşturuyor.
BX LR // bunun ne olduğunu bende bilmiyordum ama okuduğum kadarıyla bildiğimiz "ret" komutu yani fonksiyonu sonlandır ve geri dön.
Okuduğum kaynaklar:
https://sourceware.org/cgen/gen-doc/arm-thumb-insn.html
https://community.nxp.com/t5/S32K/bx-lr-vs-ret/m-p/1002594 - 12-11-2021, 18:07:39Merhabalar, konuyu açtıktan sonra iyice araştırıp öğrenmiştim. Dediğiniz bir çok şey doğru. Teşekkür ederim zaman harcadığınız için.sawashan adlı üyeden alıntı: mesajı görüntüle