x86 64 AT&T,将寄存器的一部分移动到另一个寄存器
x86 64 AT&T , moving part of register into another register
我想将一个字节从寄存器 rdx 移动到寄存器 rbx,如下所示:
mov %rdx , (%rbx,%r15,1)
在哪里
rdx 包含 0x33
,r15 是索引,rbx 在开始时包含 0。
我尝试过以多种方式使用此方法,但总是以 SIGSEGV 错误结束。
最后,我将创建一个 rbx 寄存器,它将包含下一个 rdx 值的数组
您可以一次移动一个字节,如下所示:
; Calculate first dl
...
mov %dl,%bl
; Calculate next dl
...
shlq ,%rbx
mov %dl,%bl
; Calculate next dl
...
shlq ,%rbx
mov %dl,%bl
等这假定您想要 msb 中的第一个字节和 lsb 中的最后一个字节。 revesre的顺序稍微复杂一点,但不多。
我想将一个字节从寄存器 rdx 移动到寄存器 rbx,如下所示:
mov %rdx , (%rbx,%r15,1)
在哪里 rdx 包含 0x33 ,r15 是索引,rbx 在开始时包含 0。
我尝试过以多种方式使用此方法,但总是以 SIGSEGV 错误结束。 最后,我将创建一个 rbx 寄存器,它将包含下一个 rdx 值的数组
您可以一次移动一个字节,如下所示:
; Calculate first dl
...
mov %dl,%bl
; Calculate next dl
...
shlq ,%rbx
mov %dl,%bl
; Calculate next dl
...
shlq ,%rbx
mov %dl,%bl
等这假定您想要 msb 中的第一个字节和 lsb 中的最后一个字节。 revesre的顺序稍微复杂一点,但不多。