2010-08-19 72 views
1

我正在阅读“专业汇编语言”一书,其代码为英特尔IA-32处理器编写。使用的汇编程序是GNU汇编程序。我在哪里可以找到这个Assembly参考?例如,编写Assembly for Windows,我可以在英特尔WEB站点找到参考。那么Linux和GNU汇编程序呢?Linux程序集参考

+0

你尝试维基百科:http://en.wikipedia.org/wiki/GNU_Assembler及其中的资源? – 2010-08-19 10:19:51

+0

默认语法被称为AT&T语法,如果这可以帮助你谷歌它。不过,IIRC'as'有一个接受Intex语法的开关。 – Rup 2010-08-19 10:29:54

回答

2

汇编程序仅取决于CPU,而不取决于操作系统。所以英特尔方面的文件就是您要找的。

如果您想要调用OS函数,您必须阅读编译器ABI文档(解释如何传递参数以及如何处理返回值)。另外你需要一个你可以在Linux机器手册页找到的函数列表。

为了让你开始,我建议编译一个像C这样的高级语言的程序到汇编器,看看会发生什么。请调用gcc -S file.c而不是gcc -c file.c

+0

是的,但这与问题或我的回答有什么关系? – 2010-08-19 14:07:29

0

如果你是一本书在Intel IA 32个工作,那么你应该尝试抓住指令集手册来自Intel的网站 http://developer.intel.com/products/processor/manuals/index.htm 我想你会将此作为指令的完整参考。

如果安装在同一架构上,那么linux和windows的汇编语言参考也是相同的,因为汇编语言依赖于架构。如果您使用的是intel CPU,请使用intels指令集参考。

为您汇编的语法以及你应该检查手册伴随它为GNU

http://sourceware.org/binutils/docs-2.20/as/