Digamos que quiero poner dos registros de 32 bits EAX
como palabra baja de 32 bits y EDX
como palabra de 32 bits alta en RAX. tengo encontrar una manera:¿Cómo mover dos registros de 32 bits a uno de 64 bits?
shl rdx, 32
or rax, rdx
Este método funciona sólo si estamos seguros de que los bits de 32 a 61 de RAX
son 0. Si no estamos Shure que, de lo que hay que limpiar primero la palabra alta de 32 bits , como:
mov eax, eax //This instruction should clear the high 32 bit word of RAX
¿Es esta la manera más corta?
¿Hay alguna instrucción asm x86-64 que realice esta operación?
AFAIK no hay nada más corto. Si el registro de destino es un regsiter xmm, puede usar dos instrucciones 'pinsd' y evitar las instrucciones de liberación. – hirschhornsalz
@drhirsch: Revisé casi toda la documentación de Intel y no encontré nada útil. :) –
Sí, es posible que pueda ahorrar un poco de espacio con un "xor eax, eax" para borrarlo, pero eso parece tan corto como puede ser. –