我正在通过http://www.amazon.com/Assembly-Language-Step-Step-Programming/dp/0470497025。
目前,我正在尝试移动一些代码,以便我可以使用GAS编译,而不是NASM(本书的默认编译器),而我无法理解其中的一些含义。
这是我的混淆源代码
EatMsg: db *Eat at Joe's!* , 10
EatLen: equ $-EatMst
(它在.section .data中)
如何重写它以使用GAS?
答案 0 :(得分:0)
通常,您必须研究nasm
的文档以查看构造正在做什么,然后阅读gas
手册,了解如何实现相同的功能。
在这种情况下,db
定义了一些数据字节,equ
定义了长度的别名,使用$
作为当前地址。 gas
的代码是:
EatMsg:
.ascii "*Eat at Joe's*"
.byte 10
.equ EatLen, . - EatMsg
您还可以将10
(换行符的ascii代码)合并为\n
到字符串中。
最简单的解决方案是简单地安装nasm
。