装配说明的含义

时间:2013-10-10 16:34:48

标签: linux assembly gas

我正在通过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?

1 个答案:

答案 0 :(得分:0)

通常,您必须研究nasm的文档以查看构造正在做什么,然后阅读gas手册,了解如何实现相同的功能。

在这种情况下,db定义了一些数据字节,equ定义了长度的别名,使用$作为当前地址。 gas的代码是:

EatMsg:
    .ascii "*Eat at Joe's*"
    .byte 10
.equ EatLen, . - EatMsg

您还可以将10(换行符的ascii代码)合并为\n到字符串中。

最简单的解决方案是简单地安装nasm