xor eax,eax什么意思

eg446yzk 2007-04-14 09:32:09
小弟以前入门就是C++
现在学习ASM32位汇编
帮我解释下面的有些语句看不懂
_ProcStream proc uses ebx edi esi _dwCookie,_lpBuffer,_dwBytes,_lpBytes

.if _dwCookie
invoke\ ReadFile,hFile,_lpBuffer,_dwBytes,_lpBytes,0
.else
invoke\ WriteFile,hFile,_lpBuffer,_dwBytes,_lpBytes,0
.endif
xor eax,eax ;这一句什么意思
ret

_ProcStream endp
===========================================================
xor eax,eax
请问上面的这句什么意思,达到什么样的意图
相当于C++语句的哪个语句
...全文
6361 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
eg446yzk 2007-04-15
  • 打赏
  • 举报
回复
谢谢大家指教结帖
beijingbeerman 2007-04-15
  • 打赏
  • 举报
回复
xor eax,eax
是异或运算,两数相反为1;两数相同为0。由于这两个数相同,异或后等于清0
由于它比mov eax,0效率高,所以一般用它!
xblcoolmoon 2007-04-14
  • 打赏
  • 举报
回复
eax置零,消耗2机器指令,MOV exa,0 则消耗5机器指令。
大熊猫侯佩 2007-04-14
  • 打赏
  • 举报
回复
xor eax,eax

等价于向eax赋0值,即:

mov eax,0
  • 打赏
  • 举报
回复
在Pentium之后的处理器上执行时间是一样的。
长尾巴的悟空 2007-04-14
  • 打赏
  • 举报
回复
清0,效率更高.
pig4210 2007-04-14
  • 打赏
  • 举报
回复
如上所说,使用xor置零比使用mov更快速,这是程序性能的优化。
就比如:需要得到一个数N的三倍数,你可以使用乘法,就一个mul,但是也可以使用:N左移一位,再加上N,也是三倍。同样的结果,不同的过程,但是后者反而会比前者更快,尽管前者只是一个指令,但是这个指令的执行速度不如后两个指令执行时间。
一样的道理。

21,499

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧