好的响应式网站有哪些,wordpress 调用标题,网上怎么做网站赚钱,大鹏网站建设指令后缀
ATT格式的汇编指令有不同的后缀 其中 b表示byte#xff0c;字节 w表示word#xff0c;字/两字节 l表示long#xff0c;32位系统下的long是4字节 q表示quad#xff0c;意味四重#xff0c;表示4个字/8字节
寄存器用途
参见 ATT的汇编世界 - Gemfield…指令后缀
ATT格式的汇编指令有不同的后缀 其中 b表示byte字节 w表示word字/两字节 l表示long32位系统下的long是4字节 q表示quad意味四重表示4个字/8字节
寄存器用途
参见 ATT的汇编世界 - Gemfield的文章 - 知乎
特殊寻址方式
指针寄存器rsp可以用-8(%rsp)这种方式来寻址rax等寄存器则不能 想寻址的偏移量保存在寄存器里 (%rsp, %rax) # 偏移rax寄存器里保存的值 %rsp, %rax, 2) # 取rsp偏移rax2处的值上行实际上是缺省了1 2(%rsp, %rax, 2) # 取rsp偏移rax22处的值 如下图所示 通过gdb调试查看符合
命令行参数
在bash中执行命令时参数的数量保存在(%rsp)寄存器处 第0个参数的地址可执行文件名保存在8(%rsp)处 第1个参数的地址保存在16(%rsp)处 … … 后面是环境变量
GDB汇编调试简介
layout asm 显示汇编源码 si 单步执行汇编指令会进入函数 ni 单行执行汇编指令不会进入函数 i r(info regirester) 查看寄存器的值 p 打印变量的值 p $rax # 打印rax寄存器的数据 p *0xaaaa # 打印0xaaaa处的数据以十进制整数形式 p (char*)0xaaaa # 以字符串形式
x 打印地址内的数据 x $rsp # 打印rsp寄存器指向地址内保存的数据 x/[数量][格式][宽度] 数量打印多少字节 格式t二进制/o八进制/d十进制/x十六进制/c字符/f浮点 宽度b字节/h两字节/w四字节/g八字节 例x/20xg $rsp打印rsp到rsp20处的指向地址内保存的数据
语法杂记
div div指令不接受一个立即数作为参数 div执行前被除数的高位放在rdx、低位放在rax执行后的商放在rax、余数放在rdx因此要连续运算需要把高位rdx清零或是重新赋值
lea lea指令的源操作数不能是数据寄存器因此如果想把一个常量的地址加载到某处 movq $1234, %rax leaq %rax, %rdi 上述做法是错误的 一般需要用栈空间中转用法如下 movq $1234, -8(%rsp) leaq -8(%rsp), %di 使用栈空间需要先分配