我刚开始走Assembly之路,我发现了第一个"Hello,World!"教程http://asm.sourceforge.net/intro/hello.html,提供了一种很好的psudo动态获取要输入到系统调用中的字符串长度的方法。
section .data
msg db 'Hello, World!",0xa
len equ $ - msg
这在nasm中非常有效,所有的东西都可以毫无疑问地组装、链接和运行。
当我试图找到一种在天然气中做同样事情的方法时,问题就来了。
我知道本例中的$是一个计算为当前程序集位置的令牌http://www.csie.ntu.edu.tw/~comp03/nasm/nasmdoc3.html#第3.5节
这个表达式($-msg)可以用gas来表达吗?或者这是nasm独有的句法糖吗?
对于x86,您可以以相同的方式使用".
"。例如
.data
msg:
.ascii "Hello, World!"
.byte 0xa
.equ len, . - msg
(注意:其他平台不一定如此。gas
支持许多平台,不同平台的语法各不相同!)