只是很快,爲什麼沒有配套指令要離開x86?這樣一來,爲什麼沒有伴侶指令要離開?
pushl %ebp
movl %esp,%ebp
pushl $3
leave
ret
將變成:
enter #or something
pushl $3
leave
ret
是不是隻是快於一般?
只是很快,爲什麼沒有配套指令要離開x86?這樣一來,爲什麼沒有伴侶指令要離開?
pushl %ebp
movl %esp,%ebp
pushl $3
leave
ret
將變成:
enter #or something
pushl $3
leave
ret
是不是隻是快於一般?
其實是和enter
instruction。至於爲什麼它沒有看到多大用處,"Intel® 64 and IA-32 Architectures Optimization Reference Manual"提供了一個暗示:
大會/編譯器編碼規則32.(MH影響,男通用)使用
push
/pop
管理堆棧空間和地址調整之間的函數調用/返回而不是enter
/leave
。使用enter
指令與非零立即數可能會在流水線中出現重大延遲以及錯誤預測。
對於某些處理器,有enter
。
IIRC,它被介紹了在x86上使用80186/80188處理器。 –
確實有一個匹配的ENTER(藝術的彙編語言)指令。但很少使用,因爲它很慢,正如鏈接中所解釋的那樣。
第一個代碼更快。請參閱http://stackoverflow.com/questions/5959890/enter-vs-push-ebp-mov-ebp-esp-sub-esp-imm-and-leave-vs-mov-esp-ebp – qwr