【发布时间】:2013-02-15 17:53:37
【问题描述】:
我有时喜欢使用 C(++) 中的内联汇编来了解更多信息并轻松与之交互。我查看了 NASM 等汇编程序的教程,但似乎你必须注意很多操作系统特定的细节才能做任何事情。
有没有办法使用汇编,我可以编写简单的函数并从 C 或类似的东西中调用它们?也许是一个以目标文件作为输出的汇编器?
基本上我有兴趣学习如何将问题转化为低级指令,我不想处理样板代码以将消息打印到屏幕等等。
请注意,我不打算用汇编语言编写实际程序。我知道编译器在这方面做得比我以往任何时候都好。我只是为了好玩,基本上是为了解决难题。
【问题讨论】:
-
将代码写入 .s 文件并从 main (gcc) 调用。
-
您也可以使用 -S 标志查看源代码的汇编器输出。在调试器中使用汇编器视图也有帮助。
-
另外,如果您这样做主要是为了探索(例如比较 C 和 asm 实现),您可能需要考虑使用内联汇编程序:ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html。 GCC(更不用说 AT&T)语法需要一些时间来适应,但使用 C 变量与 asm 块交换数据很方便。