GDB调试与数据传输全解析
1. 反汇编器(Disassembler)
反汇编器的作用与汇编器相反,它能将存储在内存中的值转换回汇编语言列表。在GDB提示符下输入 disassemble _start ,可以得到类似图14c的输出。使用 -g 选项汇编源代码时,会创建原始源代码中定义的标签或函数列表,这样在使用GDB时就能直接引用它们。生成列表的第一列是代码汇编的内存地址,第二列尖括号内显示的是从函数起始处的字节数。
graph TD;
A[输入命令 disassemble _start] --> B[得到反汇编输出];
例如,列表的最后一行可能会将原始的 LDR R1, = string 转换为绝对地址,如 ldr r1, [pc, #60] ,这意味着将 R1 加载为当前PC地址加60的地址(R1 = PC + 60),这里考虑了流水线。实际地址为0x100c4,会在该行末尾分号后给出,同时也会给出所引用的标签。
还可以通过指定起始和结束地址来反汇编内存区域。使用 /r 开关可以包含十六进制操作码和操作数,如 disassemble /r _bits 会得到图14d所示的输出。列表中的第三组数字是每条指令的操作码和操作数。如果程序正在运行,PC的当前位置会在某个地址左侧用 \=> 表示。
常见的反汇编
超级会员免费看
订阅专栏 解锁全文
1884

被折叠的 条评论
为什么被折叠?



