2012-01-24 4 views
2

私はちょうどアセンブリロードを始め、最初の "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#section-3.5

を評価したトークンであることを理解し

は、この式($ - MSG)が可能なガスで表現、またはこのNASM排他的なシンタックスシュガーであること?

答えて

1

x86の場合、同じ方法で "."を使用できます。例えば

.data 

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

(注:これは、必ずしも他のプラットフォームには当てはまりませんgasは、多くのプラットフォームをサポートし、構文のさまざまな側面は​​、それらの間で変わる!)私は必要な正確に何をした

+0

。 – Tezyn

関連する問題