.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修改控制字......
答案 0 :(得分:1)
在气体使用的AT& T语法中,括号而不是括号用于表示存储器访问。参见例如here
换句话说,它应该是:
fldcw (%esp)
另请注意,与intel语法相比,操作数是相反的,因此如果您已经习惯了,那么您的代码可能无法满足您的期望。
如果您更喜欢intel语法,可以使用.intel_syntax noprefix
指令。