[英]Assembly language to C code?
我試圖找出這個匯編代碼塊正在做什么:
mystery:
.LFB0
testl %edi, %edi
je .L3
subq $8, %rsp
shrl $2, %edi
call mystery
addq $1, %rax
jmp .L2
.L3:
movl $l, %eax
ret
.L2:
addq $8, %rsp
ret
到目前為止,我將此作為C代碼:
long mystery(unsigned n){
if(n==0)
return 1;
而且我知道這里有一個遞歸函數,而n!= 0但是我不明白%rsp寄存器在做什么
這是我的猜測:
#include <inttypes.h>
int64_t mystery(int32_t n) {
if (n == 0) {
return 1;
}
return 1 + mystery(n / 4);
}
我不知道$l
在行中是什么:
movl $l, %eax
所以我的上述解決方案假設這是$1
的拼寫錯誤。 開導我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.