Quanto bytes é que o RESB, o RESW, o RESD e o RESQ distribuem na NASM? [duplicado]
DB
atribui 1 byte.
DW
atribui 2 bytes.
DD
distribui 4 bytes.
DQ
atribui 8 bytes.
RESB 1
repartição 1 bit.
RESW 1
atribui 2 bytes.
RESD 1
distribui 4 bytes.
RESQ 1
atribui 8 bytes.
a documentaçãonão diz muito:
[[10]}3.2.2 RESB e amigos: a declarar dados não iniciadosRESB, RESW, RESD, RESQ, REST, RESO, RESY e RESZ foram concebidos para serem: usado na secção BSS de um módulo: eles declaram não inicializados espaco. Cada um tem um único operando, que é o número de bytes, palavras, doublewords ou qualquer coisa para reservar. Como indicado na secção 2.2.7, NASM não suporta a sintaxe MASM/TASM de reservar espaço não inicializado escrevendo DW ? ou coisas semelhantes: isto é o que em vez disso. O operando a uma pseudo-instrução de tipo RESB é um expressão crítica: ver ponto 3.8.
por exemplo:
tampão: resb 64; reserva 64 bytes
Wordvar: resw 1 ; reserve uma palavra
Realarray resq 10; array of ten realals
Mmval: resy 1; um registo de MMM
Zmmvals: resz 32 ; 32 registos ZMM
1 answers
Estou correcto?Sim.
Os sufixos de tamanho são consistentes em todo o NASM, para d*
e res*
. Eles combinam com sufixos mnemônicos de instruções x86 para byte para qword. (por exemplo psubd
funciona com elementos embalados de palavra d).
cqo
.
Os sufixos Y E z size correspondem obviamente aos tamanhos de Registo ymm e zmm, mesmo que as mnemónicas de instrução sejam agora coisas como VBROADCASTI32X8
por causa da granularidade de mascaramento AVX512.