-2

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

4

1 回答 1

1

通常,您必须研究文档nasm以查看构造在做什么,然后阅读gas有关如何实现等效功能的手册。

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

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

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

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

于 2013-10-10T16:41:46.787 回答