首页
社区
课程
招聘
[讨论]关于64位寄存器赋值
发表于: 2017-7-5 02:09 4910

[讨论]关于64位寄存器赋值

2017-7-5 02:09
4910

将edx作为高32位eax作为低32位赋值给64位的rbx

我想到

   mov ebx, edx
   shl rbx, 020h
   mov ebx, eax

后发现mov ebx, eax指令会将rax高32位也清0


后翻资料写着64位指中加上了movsxd,但放弃了movzxd


尼码?

mov ebx, eax

movsxd ebx, eax

有区别吗? 我倒是觉得应该有movzxd而放弃movsxd


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2

终于知道编译器生成的mov eax, eax有什么用了

2017-7-5 08:34
0
雪    币: 111
活跃值: (65)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
    mov  ebx,  edx
      shl  rbx,  020h
      mov  ebx,  eax            //<<===请问如何指令能让eax只赋值rbx低32位而不改变高32位?

其实我就是想实现最简单的edx:eax填充rbx的汇编指令
2017-7-5 12:32
0
雪    币: 111
活跃值: (65)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
没人吗
2017-7-5 16:51
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
mov    ebx,    edx
shl    rbx,    020h
or    rbx,    eax
2017-7-5 17:06
0
雪    币: 111
活跃值: (65)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
yezhulove mov ebx, edx shl rbx, 020h or rbx, eax
谢谢,但这样也必须得xor  rax,  rax,保证rax高32位为0
2017-7-5 23:18
0
游客
登录 | 注册 方可回帖
返回
//