【问题标题】:%line directive from NASM equivalent for MASM来自 NASM 的 %line 指令等效于 MASM
【发布时间】:2021-07-26 17:40:24
【问题描述】:

基本上,我正在编写一种简单的类 C 语言,可以直接输出 NASM 语法汇编程序。我可以在 VS 中调试它,但这有点痛苦。使用 MASM 可以更流畅地进行调试,但是 NASM 有一个 %line 指令,我可以在调试时将我的原始源代码链接到程序集(注意我实际上还没有让它工作)。

无论如何我都找不到在 Win 10 上调试 NASM 程序集或 MASM 中的 %line 指令的等效项(我可以在 VS 中调试)

非常感谢任何帮助。

【问题讨论】:

  • 您应该能够将-gcv8 与 nasm 一起使用来生成符号。 Masm 从未设计为编译器的后端(VC++ 一直使用内部汇编器),因此它没有行号传递。
  • @TimRoberts 感谢您提供的信息。我已经尝试过了,但我看不出输出有什么不同。 NASM 应该生成一个带有符号的单独文件还是嵌入它们?
  • 我相信它会生成一个.pdb 文件。调试符号格式用-F(大写F)给出;您可以使用nasm -h 获取支持的格式列表。
  • @TimRoberts 非常感谢您的帮助!你非常亲近,帮助我走上了正确的道路!

标签: nasm masm


【解决方案1】:

对于遇到此问题的其他人。

NASM 需要类似于下面的内容才能在 Windows 上获得调试输出。

nasm -g -F cv8 mymain.asm -f win64 -o mymain.obj

要使用符号并实际获取 pdb 文件,您需要告诉 LINK 将其提供给您。 /pdb:filename 和 /debug 都是必需的。

链接 /subsystem:console /pdb:mymain.pdb /debug /entry:mymain mymain.obj

【讨论】:

    猜你喜欢
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2011-07-22
    • 2011-05-07
    • 1970-01-01
    • 2020-12-02
    相关资源
    最近更新 更多