0%

CMU15213-CSAPP Machine-Level Programming I

GCC编译链接 GDB调试

使用 -S 选项可以让gcc产生对应的汇编代码,注意大小写

1
gcc -Og -S sum.c

产生可执行文件

1
gcc -Og sum.c -o sum

objdump 可以反汇编可执行文件

1
2
objdump -d sum
objdump -d sum > sum.asm

gdb调试工具,可以反汇编特定的函数

1
2
gdb sum
disassemble sumstore

汇编基础

一些寄存器

movq指令的用法

leaq的用法

leaq相当于取地址符,但实际上里面可以不存放地址,直接用来当乘法运算,可加速计算,

1
2
leaq (%rdi, %rdi, 2), %rax  ;相当于rax = rdi + rdi*2
salq $2, %rax ;左移2位

例如将rdi乘3,然后的把这个值赋给rax,
再让这个值左移两位达成*12的目的

其他的算数指令



求大佬赏个饭