GCC编译链接 GDB调试
使用 -S 选项可以让gcc产生对应的汇编代码,注意大小写
1 | gcc -Og -S sum.c |
产生可执行文件
1 | gcc -Og sum.c -o sum |
objdump 可以反汇编可执行文件
1 | objdump -d sum |
gdb调试工具,可以反汇编特定的函数
1 | gdb sum |
汇编基础
一些寄存器
movq指令的用法
leaq的用法
leaq相当于取地址符,但实际上里面可以不存放地址,直接用来当乘法运算,可加速计算,
1 | leaq (%rdi, %rdi, 2), %rax ;相当于rax = rdi + rdi*2 |
例如将rdi乘3,然后的把这个值赋给rax,
再让这个值左移两位达成*12的目的