2015-04-25 87 views
0

我想一个字节从寄存器RDX移动到寄存器RBX,像这样:86 64 AT&T,移动寄存器的部分到另一个寄存器

mov %rdx , (%rbx,%r15,1) 

其中 RDX包含0x33 ,R15是指数和rbx在开始时包含0。

我已经尝试过在很多方面使用这种方法,总是以SIGSEGV错误结束。 最终我要创建一个RBX寄存器,其将包含下RDX的值的数组

+0

您没有进入寄存器,而是进入由rbx和r15引用的内存位置。这就是段错误的原因。 –

+0

“rbx寄存器将包含下一个rdx值的数组” - 这没有任何意义,你是什么意思? – harold

回答

0

可以在一个时间中一个的字节偏移,这样的:

; Calculate first dl 
... 
mov %dl,%bl 
; Calculate next dl 
... 
shlq $8,%rbx 
mov %dl,%bl 
; Calculate next dl 
... 
shlq $8,%rbx 
mov %dl,%bl 

等这假定您希望msb中的第一个字节以及lsb中的最后一个字节。 revesre秩序有点复杂,但并不多。

+0

非常好的主意,谢谢! – Piodo