2

私は議会の道を歩み始めたばかりで、最初の「Hello、World!」の1つです。私が見つけたチュートリアル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)はガスで表現できますか、それともこのnasm専用のシンタックスシュガーですか?

4

1 に答える 1

2

x86の場合.、同じように「」を使用できます。例えば

    .data

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

(注:これは他のプラットフォームには必ずしも当てはまりません。 gas多くのプラットフォームをサポートしており、構文のさまざまな側面がプラットフォーム間で異なります!)

于 2012-01-25T00:55:48.700 に答える