2

我刚开始组装的道路,第一个“你好,世界!” 我找到的教程http://asm.sourceforge.net/intro/hello.html提供了一种很好的伪动态获取字符串长度以进入系统调用的方法。

section .data
msg db 'Hello, World!",0xa
len equ $ - msg

这在 nasm 中效果很好,一切都可以毫无疑问地组装、链接和运行。

当我试图找到一种方法在气体中做同样的事情时,问题就来了。

我知道在这种情况下 $ 是一个评估当前装配位置的标记http://www.csie.ntu.edu.tw/~comp03/nasm/nasmdoc3.html#section-3.5

这个表达式 ($ - msg) 可以用gas表示,还是这个nasm独有的语法糖?

4

1 回答 1

2

对于 x86,您可以.以相同的方式使用“”。例如

    .data

msg:
    .ascii "Hello, World!"
    .byte 0xa
    .equ len, . - msg

(注意:对于其他平台不一定如此。 gas支持许多平台,并且它们之间语法的各个方面有所不同!)

于 2012-01-25T00:55:48.700 回答