汇编-什么是macOS';DOS的s等价性&x27;d调试?

汇编-什么是macOS';DOS的s等价性&x27;d调试?,macos,assembly,Macos,Assembly,我不熟悉汇编语言,我正在使用macOS。我读的这本书使用了DOS的调试指令,它可以随时查看寄存器中的值,而无需在某些可执行程序(如lldb)中设置断点,并且可以执行基本的汇编指令(如mov ax,2000)。我知道macOS运行在x86_64机器上,这与DOS不同。我只是想要一种方法,可以在没有正式汇编程序的情况下检查终端中的寄存器/内存并与之交互。(例如,在DOS中,键入debug-r,我就可以看到寄存器中存储的所有值)。在lldb中-股票MacOS调试器 register read 将显示

我不熟悉汇编语言,我正在使用macOS。我读的这本书使用了DOS的调试指令,它可以随时查看寄存器中的值,而无需在某些可执行程序(如lldb)中设置断点,并且可以执行基本的汇编指令(如
mov ax,2000
)。我知道macOS运行在x86_64机器上,这与DOS不同。我只是想要一种方法,可以在没有正式汇编程序的情况下检查终端中的寄存器/内存并与之交互。(例如,在DOS中,键入
debug-r
,我就可以看到寄存器中存储的所有值)。

lldb
中-股票MacOS调试器

register read
将显示所有寄存器值

也可以使用缩短的语法以加快键入速度

re r
如果您希望浮点寄存器(x86-64的xmm*也包括在内)

re r --all
如果您想要特定的寄存器值

re r rax
lldb
用于苹果公司最新版本的
Xcode
MacOS免费编程IDE,允许您以MacOS和iOS为目标

在运行程序时,您还可以使用终端路由:

lldb ./yourProgram

但是这种方法需要大量的输入和二进制知识,所以我不推荐初学者使用。

我不知道有任何内置汇编程序支持的调试器。你可以通过编写gdb脚本来调用汇编程序,并将机器代码插入进程内存以执行它,但我认为这不值得麻烦。@Jester事实上,我读过的书告诉我DOS中的调试支持汇编程序。是的,我知道。。我的意思是对于mac:D,您可以在dosbox中运行调试,怎么样?我上次读到,
debug.exe
甚至不支持标签,所以分支必须使用数字目标。这完全是胡说八道,所以我不建议使用它。它是现存最差的汇编程序之一。除了执行一条汇编指令以查看它对寄存器的作用之外,还可以使用gcc或NASM组装并链接某些内容,并在GDB或LLDB中使用
starti
stepi
第一条指令启动它。使用
layout reg
显示寄存器。谢谢。但是我还没有找到一种不用运行程序就可以使用lldb的方法。我想随时查看寄存器中的值(不仅是在运行时,直到在某个程序中找到断点为止,DOS的调试可能会找到断点。)我相信你是在要求不可能的,从技术上讲,任何调试器都必须运行该程序才能评估CPU寄存器的当前状态。DOS
Debug
可能会让你产生错觉,以为它没有运行你的程序,但不知何故它需要执行程序指令。快速瞥一眼就证实了这一点。@Evian您的意图是什么?在您输入程序之前,寄存器的内容是没有意义的。因此,至少,你可以在程序的最开始设置一个断点并检查那里的寄存器。我认为@Evian希望在交互模式下运行,就像在DOS中调试一样。