阅读:3567回复:7
mov与push&pop有什么区别吗?
我看付值的时候有时候用MOV A, B
有时候就用PUSH B; POP A 这两者有什么区别吗?还是就是因为太单调了才换着用?谢谢 |
|
沙发#
发布于:2005-02-19 21:57
因为在X86处理器上不支持内存到内存的传送,所以必须通过寄存器
比如A给B,必须 MOV EAX,A MOV B,EAX 就是说需要使用一个寄存器,而如果使用 PUSH A POP B 则通过堆栈来做,从而可以节省寄存器 特别在X86-64以前,寄存器不多,还是比较好的,不过速度还是慢了点..... [编辑 - 2/19/05 by wowocock] |
|
|
板凳#
发布于:2005-02-22 12:19
明白了,谢谢了
|
|
地板#
发布于:2005-03-17 07:59
MOVS系列指令就是用来进行内存<->内存数据传送的.
MOV, PUSH, POP在不同CPU上的效率(执行时间, 指令长度)不一样. 有时候也属于编程风格吧. toad |
|
地下室#
发布于:2005-06-09 22:45
真是高手
|
|
5楼#
发布于:2005-07-26 10:59
还有一点,MOV只改变了AB寄存器的值,而PUSH,POP还修改了堆栈内容
|
|
|
6楼#
发布于:2007-01-21 17:53
嗯,我认为最重要的两点就是效率和码长.
|
|
7楼#
发布于:2007-02-03 16:51
push /pop 和call,jmp病毒经常容它们构造变形技术.
相比mov处理数据直接些更容易分析出来 |
|