【发布时间】:2015-06-23 13:07:57
【问题描述】:
我最近读到,ARM 上的 Linux 软件断点是在 ARM 模式下使用 UND 指令和在 Thumb 模式下使用 BKPT 指令实现的。为什么有 2 条单独的指令用于引发软件中断?
【问题讨论】:
-
arm 和 thumb 是两个不同的指令集。
-
@dwelch 我知道它们是两个不同的指令集。但是,为什么需要有 2 个单独的断点指令? ARM 没有定义断点指令是什么,Linux 会定义(与 x86/x64 的断点指令相反)。
-
ARM没有
bkpt指令starting armv5吗?编辑:没关系,如果是 Linux,它可能需要支持所有 ARM 版本。 -
还需要两个单独的断点指令,可能是因为它们是两个不同的指令集(即每个指令集一个断点指令)。我相信其他指令碰巧在指令集之间具有相同名称的事实可能只是为了方便。
-
如果您要询问人类的助记符,这完全是汇编程序(读取 ascii 并生成机器代码的程序)的一时兴起,它从一个汇编程序到另一个汇编程序有所不同,就像push 是一个只有拇指的指令,而 arm 没有,但随后汇编程序开始容忍 arm 指令的助记符 push。无论如何,如果它是关于 ascii/助记符命令的,那么这只是汇编器作者的意见问题,除非那个人或那些人在这里分享他们的心血来潮,不确定你会得到答案。
标签: linux linux-kernel gdb arm breakpoints