Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly gdb中的脚本反汇编_Assembly_Scripting_Gdb - Fatal编程技术网

Assembly gdb中的脚本反汇编

Assembly gdb中的脚本反汇编,assembly,scripting,gdb,Assembly,Scripting,Gdb,我正在使用gdb脚本逐个指令转储寄存器内容(这不是交互式调试会话,layout asm或TUI模式不存在) 我想将与当前指令对应的机器代码添加到寄存器值中。我已经找到了一个技巧来克服这样一个事实,即反汇编命令旨在为您提供有关当前指令的大量上下文,并且我不知道应该反汇编多少字节才能获得完整指令。无论指令大小如何,1的范围为我提供了以下信息: (gdb) disassemble $pc,$pc+1 Dump of assembler code from 0x400efe to 0x400eff: =

我正在使用
gdb
脚本逐个指令转储寄存器内容(这不是交互式调试会话,
layout asm
或TUI模式不存在)

我想将与当前指令对应的机器代码添加到寄存器值中。我已经找到了一个技巧来克服这样一个事实,即
反汇编
命令旨在为您提供有关当前指令的大量上下文,并且我不知道应该反汇编多少字节才能获得完整指令。无论指令大小如何,1的范围为我提供了以下信息:

(gdb) disassemble $pc,$pc+1
Dump of assembler code from 0x400efe to 0x400eff:
=> 0x0000000000400efe <main+0>: push   %r15
End of assembler dump.
还有另一种显示此信息的方法:

(gdb) x/i $pc
=> 0x400efe <main>: push   %r15
(gdb) x/x $pc
0x400efe <main>:    0x56415741
(gdb)x/i$pc
=>0x400efe:推送%r15
(gdb)x/x$pc
0x400efe:0x56415741
但是我找不到一个格式说明符,它可以让我专门提取
4157
(我可以接受
5741
)。正如您所看到的,面向指令的程序在不显示机器代码的情况下进行反汇编,而hextump不知道指令长度

最后,我需要这个值以一个
printf
结尾,这意味着根据我得到的当前输出,仍然需要进行一些解析。我不确定这在纯
gdb
脚本中是否可行

如果可能的话,我宁愿避免依赖
gdb
python

你知道有什么方法可以实现我想做的吗

(gdb) x/i $pc
=> 0x400efe <main>: push   %r15
(gdb) x/x $pc
0x400efe <main>:    0x56415741