【发布时间】:2018-10-12 08:17:28
【问题描述】:
在查看 gdb 输出并查看程序集调用时,通常我可以找到一个使用硬编码值的命令来确定寄存器是从右到左加载还是反之亦然。
通常是这样的:
sub rsp, 16
或
sub 16, rsp
但其他时候,像上面这样的值是不可见的。 我所看到的只是如下调用:
(gdb) disassemble
Dump of assembler code for function main:
0x0000000100000f54 <main+4>: mov $rdi,%r15
0x0000000100000f59 <main+9>: mov $rsi,%r14
0x0000000100000f60 <main+16>: mov $rdx,%r13
0x0000000100000f67 <main+23>: mov $ecx,$r12d
End of assembler dump.
如何确定值是从左到右处理还是从左到右处理?
【问题讨论】:
-
如果寄存器有
%前缀 => AT&T 语法 =>src, dst顺序。否则,朴素 => 英特尔语法 =>dst, src.
标签: assembly x86 cpu-registers att intel-syntax