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