2013-01-11 45 views
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修改控制字...

回答

1

在AT & T語法中,使用括號括號代替括號來表示內存訪問。見例如here

換句話說,它應該是:

fldcw (%esp) 

還要注意的是,操作數相比,英特爾的語法逆轉,所以你的代碼可能不會做,如果你習慣了你期待什麼。

如果您更喜歡英特爾語法,則可以使用.intel_syntax noprefix指令。