4

只需阅读一本 C++ 书籍,您就可以通过使用 asm 关键字将汇编程序直接放入 C++ 中。

这是否意味着,如果想使用 Visual Studio 编写汇编程序,我可以简单地创建一个 C++ 主方法,然后将汇编程序放入其中并将其作为 C++ 程序执行?编译器会简单地运行嵌入汇编程序的 C++,就好像它只是一个汇编程序一样?

我的问题源于缺乏适合汇编程序的 IDE。

4

1 回答 1

4

当你使用 C++ 编译器时,它会在你的程序中添加额外的代码,而不是int main(). 如果你曾经反编译过一个简单的 hello world 程序,你会注意到它在很久之前就开始执行了int main(),调用了一些函数,比如_set_app_typeand_getmainargs然后最终调用了你的int main(). 对您来说最有趣的事情可能是调用 ,_getmainargs因为它为您的程序获取命令行参数。如果您要使用 NASM、FASM 甚至 GAS 等汇编程序编译您的程序集,它不会调用_getmainargs和其他程序,因此您作为程序员必须实现自己的方式来获取命令行参数,这对初学者来说可能很棘手.

只要您__asm使用volatile关键字指定您的,编译器就不应修改您的汇编代码,它会像“汇编程序”一样运行(该特定代码)。

如果您正在寻找用于组装的 IDE,我可以告诉您我已经走上了同样的道路。我使用 FASM,它是一个很棒的小 IDE,但是有 Eclipse 甚至 Visual Studio 的插件,虽然我不能说我对它们有很好的体验。

编辑:我想补充一点,如果您正在学习汇编,那么最好使用汇编程序来学习它。当 C++ 或更高的语言不能使用时,会使用汇编的常见用途,因此,如果您依赖 C++ 编译器和内联汇编语法,则在尝试编写原始汇编时可能会导致混淆。

于 2012-04-16T02:16:27.910 回答