2012-09-23 67 views
1

的功能主要转储的汇编代码:指令的参数顺序

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 据英特尔手册(英特尔架构软件开发人员手册。Volume 3-104 MOV指令),mov a, b应该是move b to a

Next sub指令是一样的。我知道sub a,b意味着a = a-b。但是这里sub $0x30, %rsp意味着rsp = rsp - 0x30

我怎么了?

+2

'''无处不在,无意义的内存语法和一条不可能的指令。所有指向AT&T语法。 – harold

回答

2

没什么不对的。你在这里提出的是AT & T语法中的汇编代码(谷歌它),其中操作数顺序是相反的,你看到的英特尔手册。

+0

非常感谢Alexey!从你的帮助中,我搜索了这个文件。 http://stackoverflow.com/questions/972602/att-vs-intel-syntax-and-limitations再次谢谢你! – plhn