BKPT 操作码的中间值有什么用?

逆向工程 拆卸 手臂
2021-06-19 13:36:39

汇编程序语法 BKPT # 其中:请参阅第 A6-7 页上的标准汇编程序语法字段。指定存储在指令中的 8 位值。ARM 硬件会忽略此值,但调试器可以使用该值来存储有关断点的其他信息。

我应该传递给这个函数什么?调试时在哪里可以看到该值?

BKPT #0 与 BKPT #1 - 它们有区别吗?

2个回答

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0552a/BABHCHGB.html

当到达特定地址的指令时,调试工具可以使用它来调查系统状态。

imm被处理器忽略。如果需要,调试器可以使用它来存储有关断点的附加信息。

BKPT #0x3   ; Breakpoint with immediate value set to 0x3 (debugger can
            ; extract the immediate value by locating it using the PC)

根据您在问题中粘贴的内容,您可以imm为 ARM 处理器使用任何 8 位值

您可以imm通过在PC导致断点(程序计数器)处获取指令并查看imm该指令中使用的值来查看调试器中的

CPU 不检查立即数,但异常处理程序可以检查该立即数,例如区分调​​试器插入的断点和程序员/编译器添加的断点。例如,ARM 半主机接口BKPT 0xAB在 ARMv7-M 上使用,并且可能不适用于其他立即数。