簡體   English   中英

匯編語言為C代碼?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM