1
A
回答
3
不,你不能這樣做(確切地說)。對於幾乎所有的Intel x86指令,其中一個操作數必須是一個寄存器。
有一個例外於:cmpsb
比較[ds:si]
到[es:di]
(或者,在32位模式下,[ds:esi]
到[es:edi]
,或在64位模式下,使用rsi
和rdi
)。
如果你想使用si
但是指向兩個操作數,你需要加載一些其他的寄存器,然後進行比較:
mov al, [temp+si]
cmp al, [temp+si+1]
另一種可能性是從[si]
加載,並增加si
:
lodsb ;roughly equivalent to mov al, [si]/inc si
cmp al, [si]
因爲這是唯一能夠使用si
,不temp+si
,你需要使用此之前,加在一起的。這個稍微短一點,但是在大多數當前的處理器上(至少理論上)較慢。要恢復速度,你也可以使用更原始的指令:
mov al, [si+temp]
inc si
cmp al, [si+temp]
或者,因爲你使用+temp
兩個指令,你可以通過這樣做,除了提前獲得一點:
add si, temp
mov al, [si]
inc si
cmp al, [si]
雖然有一點需要記住:因爲你正在處理內存中的數據,所以這可能不會在速度上產生任何實質性差異 - 如果你對內存做了很多事情,內存的帶寬通常(通常是?)瓶頸,所以優化處理器本身的指令執行效果幾乎沒有什麼區別。
相關問題
- 1. 我可以重寫這樣的網址嗎?這是個好主意嗎?
- 2. 可以寫這樣的東西嗎?
- 3. 模板 - 可以這樣做嗎?
- 4. 我可以用這種方式寫「OCAML模式匹配」嗎?
- 5. 可以這樣做嗎?
- 6. 可以這樣查詢嗎?
- 7. 可以這樣做嗎?
- 8. Java可以這樣做嗎?
- 9. 可以jquery這樣做嗎?
- 10. x86尋址模式
- 11. 這個XML例子可以寫出一個模式嗎?
- 12. 索引尋址模式和隱含尋址模式
- 13. 寄存器尋址模式與直接尋址模式
- 14. 這是反模式還是可以嗎?
- 15. 這是ARM DA(Decrement After)尋址模式的第一個地址嗎?
- 16. emacs 23 python.el自動縮進樣式 - 可以這樣配置嗎?
- 17. 尋址模式效率
- 18. MASM尋址模式語法
- 19. 大會尋址模式
- 20. MIPS可以字節尋址
- 21. 這是可以寫這個每週crontab表達式嗎?
- 22. 可以這樣用外聯接寫
- 23. 我可以投這樣的指針嗎?
- 24. 我可以做這樣的事嗎?
- 25. .NET AppDomains可以這樣做嗎?
- 26. [「var」+1] = someValue - 可以這樣做嗎?
- 27. 我可以這樣使用#undef嗎?
- 28. 這樣可以使用PhoneGap嗎?
- 29. Xaml - '計算值' - 可以這樣做嗎?
- 30. 靜態類...可以這樣做嗎?
假設它是x86,OP沒有指定。 –
謝謝!
–