0
.data
     oldcw: .int 
     clear: .long 0xF0FF
     round: .long 0x0D00

    fstcw oldcw
    fwait
    mov oldcw,%ax
    and %ax,clear
    or %ax,round
    pushl %eax
    fldcw [%esp]
    popl %eax

角かっこについてエラーが発生します。

invalid char '[' beginning operand 1 `[%esp]'

ブラケットの問題について誰かが助けてくれますか?ここでfldcwを使用して制御ワードを変更しようとしています...

4

1 に答える 1

1

どのガスが使用するかの AT&T 構文では、ブラケットの代わりに括弧を使用してメモリ アクセスを示します。たとえばここを参照してください。

つまり、次のようにする必要があります。

    fldcw (%esp)

また、Intel 構文と比較してオペランドが逆になっていることに注意してください。そのため、慣れていると、コードが期待どおりに動作しない可能性があります。

intel 構文を好む場合は、.intel_syntax noprefixディレクティブを使用できます。

于 2013-01-17T17:17:48.357 に答える