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 回答