我正在浏览英特尔处理器文档并同时编写一些基本的汇编代码。我的服务器上同时拥有nasm
和as
(GAS),并且我了解这两个汇编程序的基本区别。
从长远来看:
- 专注于这些语法中的哪一个是更好的主意?
- 这些语法的优点和缺点是什么?
- 哪一种被更广泛地使用和理解?
我也很感激你能与我分享的任何偏好。
取决于你的项目。并非每个编译器都允许这两种语法。如果您需要在其他平台上组装代码,英特尔可能会更好,即使经过几年的经验,我个人更喜欢英特尔,但差别很小,对我来说并不重要。
在 AT&T 语法中%
,如果您需要使用宏,则更多,甚至更多。OTOH 我更喜欢源、目标顺序,但这是个人喜好,其他人可能更喜欢它,因为它类似于 C 中的赋值运算符的书写顺序(以及更多)。
我的 INTEL 语法是像DWORD PTR
,在 AT&T 中,一个小的附加l
就足够了。在许多情况下,助记符的确切拼写不同,我发现 AT&T 更合乎逻辑,而英特尔的方式当然是标准。Intel 中的寻址模式更具可读性。
我相信 AT&T 使用得更多,因为 linux 在嵌入式平台上无处不在,而在其他软件项目中,汇编程序更常用。有更多的汇编程序可以理解 Intel 的语法,这是真的,但我相信 gcc/gas 更多地用于汇编程序很重要/有用的领域。
专注于这些语法中的哪一个是更好的主意?
无论您愿意与哪个合作
这些语法的优点和缺点是什么?
对我来说:优点:-英特尔:可读-AT&T:更多平台(因为'as'在许多平台上都可用)缺点:-英特尔:许多汇编程序,但很少有共同的相似之处,许多功能是汇编程序特定的-AT&T:它增加了+ /- 对你的眼睛
哪一种被更广泛地使用和理解?
AFAIK 英特尔语法被更广泛地使用。您可以查看支持 Intel 与 AT&T 的组装商数量。