¿Cuál es la sintaxis de la palabra clave / instrucción “alinear” en el ensamblador x86?
Hasta donde entiendo, algunos objetos de la sección “datos” a veces necesitan alineación en el ensamblaje x86.
Un ejemplo que he encontrado es al usar movaps en x86 SSE: necesito cargar una constante especial para xors posteriores en un registro XMM.
El registro XMM tiene 128 bits de ancho y necesito cargar una ubicación de memoria de 128 bits en él, que también estaría alineada en 128 bits.
Con prueba y error, he deducido que el código que estoy buscando es:
sección .texto
foo:
movaps xmm0, [xorconst] ; esta es la parte de carga
xor eax, eax
ret
sección .datos
alinear 16 ; alinear a 16 bytes = 128 bits
xor_const: dd 80000000h, 80000000h, 80000000h, 80000000h ; la constante de 128 bits
Mis preguntas son:
– ¿En qué sabores de ensamblaje uso .align en lugar de alinear?
– ¿Necesito escribir esta palabra clave/instrucción antes de cada objeto de datos o hay una manera de escribirla solo una vez?
– ¿Cuál es una documentación relevante que puedo leer sobre esto?
– ¿”Alinear” es una palabra clave o una instrucción (o quizás algo más)?
davy.ai
.align
se utiliza en el ensamblador NASM, mientras quealign
se utiliza en el ensamblador GAS.align
antes de cada objeto de datos que necesite alineación.align
es una instrucción.