- 论坛徽章:
- 0
|
汗~
还真有这回事,连 AMD / Intel 的官方文档都没讲清楚
下面是我在 bochs 调试的情况:
- Next at t=177905194
- rax: 0xffff8000:00400000 rcx: 0x00000000:00000000
- rdx: 0x00000000:00000000 rbx: 0xfffff000:fffff000
- rsp: 0xfffff000:fffffff0 rbp: 0x00000000:0000b028
- rsi: 0x00000000:ffff9000 rdi: 0x00000000:000b9900
- r8 : 0x00000000:00000000 r9 : 0x00000000:00000000
- r10: 0x0000ee00:00000000 r11: 0xffff9000:00051008
- r12: 0x00000000:00000000 r13: 0x00000000:00000000
- r14: 0x00000000:00000000 r15: 0x00000000:00000000
- rip: 0xffff8000:004000c8
- eflags 0x00000246: id vip vif ac vm rf nt IOPL=0 of df IF tf sf ZF af PF cf
- (0) [0x1f4000c8] 0058:ffff8000004000c8 (unk. ctxt): mov eax, 0x80000000 ; b800000080
- <bochs:6> s
- Next at t=177905195
- rax: 0x00000000:80000000 rcx: 0x00000000:00000000
- rdx: 0x00000000:00000000 rbx: 0xfffff000:fffff000
- rsp: 0xfffff000:fffffff0 rbp: 0x00000000:0000b028
- rsi: 0x00000000:ffff9000 rdi: 0x00000000:000b9900
- r8 : 0x00000000:00000000 r9 : 0x00000000:00000000
- r10: 0x0000ee00:00000000 r11: 0xffff9000:00051008
- r12: 0x00000000:00000000 r13: 0x00000000:00000000
- r14: 0x00000000:00000000 r15: 0x00000000:00000000
- rip: 0xffff8000:004000cd
- eflags 0x00000246: id vip vif ac vm rf nt IOPL=0 of df IF tf sf ZF af PF cf
- (0) [0x1f4000cd] 0058:ffff8000004000cd (unk. ctxt): mov ebx, 0x80000000 ; c7c300000080
- <bochs:7> s
- Next at t=177905196
- rax: 0x00000000:80000000 rcx: 0x00000000:00000000
- rdx: 0x00000000:00000000 rbx: 0x00000000:80000000
- rsp: 0xfffff000:fffffff0 rbp: 0x00000000:0000b028
- rsi: 0x00000000:ffff9000 rdi: 0x00000000:000b9900
- r8 : 0x00000000:00000000 r9 : 0x00000000:00000000
- r10: 0x0000ee00:00000000 r11: 0xffff9000:00051008
- r12: 0x00000000:00000000 r13: 0x00000000:00000000
- r14: 0x00000000:00000000 r15: 0x00000000:00000000
- rip: 0xffff8000:004000d3
- eflags 0x00000246: id vip vif ac vm rf nt IOPL=0 of df IF tf sf ZF af PF cf
复制代码
我分别用两种指令编码方式来测试 mov reg32, imm32 ,结果都是将高32位清 0 了,它们都作了 “零扩展”动作
AMD /Intel 的文档都没说出这个问题。 |
|