2010-03-28 92 views

回答

6

圓括號之前的數字是一個字節偏移量(這會導致發生內存引用),並且您不能讓它們中的兩個使用movl。您需要將該值臨時移至寄存器中。

movl 4(%ebp), %ecx 
movl %ecx, 8(%ebp) 
2

這不是一個法律指令。對於大多數引用內存的指令,您必須將其移入/移出寄存器。

2

movl不記憶存儲器移動,你必須通過一個寄存器的方式(因此有兩個movl指令)。

+1

謝謝,但爲什麼呢?是限制這個還是其他什麼的cpu結構? – freenight 2010-03-28 02:34:38

+2

是的,這是CPU的限制。 MOVS是關於唯一的內存到內存的指令。 – 2010-03-28 02:46:26

+2

是的,內存到內存只是無法實現所有這些有效(非x86 CPU往往有所有的指令只是註冊寄存器,加載/存儲爲唯一的寄存器到內存)。 – 2010-03-28 03:02:21