TayfunGuler adlı üyeden alıntı: mesajı görüntüle
Merhabalar,

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.
Öncelikle arm bilgim yok ama x86 ya benzediği için anladığım kadarıyla yazdığımı belirteyim.

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