1

関数 main のアセンブラー コードのダンプ:

0x0000000100000de6 <main+0>:    push   %rbp
0x0000000100000de7 <main+1>:    mov    %rsp,%rbp
0x0000000100000dea <main+4>:    sub    $0x30,%rsp
0x0000000100000dee <main+8>:    mov    %edi,-0x14(%rbp)

mov %rsp,%rbp私は手段を学んだmove the value of rsp to rbp
しかし、私はインテルのアーキテクチャで、それは意味することを知っていたインテルmove the value of rbp to rsp のマニュアル(Intel Architecture Software Developer's Manual. Volume 2. 3-104 MOV命令)によると、mov a, bmove b to a

subの命令は同じです。sub a,b私は手段を知っていたa = a-b。しかし、ここでsub $0x30, %rsp意味するのはrsp = rsp - 0x30

私がどうかしましたか、まずいことでもありましたか?

4

1 に答える 1

2

あなたには何も問題はありません。ここで提示したのは、AT&T 構文 (Google で検索) のアセンブリ コードであり、オペランドの順序は、Intel のマニュアルにあるものとは逆です。

于 2012-09-23T13:00:02.043 に答える