Quanto bytes é que o RESB, o RESW, o RESD e o RESQ distribuem na NASM? [duplicado]

Esta pergunta já tem uma resposta:

DB atribui 1 byte.

DW atribui 2 bytes.

DD distribui 4 bytes.

DQ atribui 8 bytes.

Então, presumo que ...

RESB 1 repartição 1 bit.

RESW 1 atribui 2 bytes.

RESD 1 distribui 4 bytes.

RESQ 1 atribui 8 bytes.

Estou correcto?


a documentaçãonão diz muito:

[[10]}3.2.2 RESB e amigos: a declarar dados não iniciados

RESB, 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

Author: user8240761, 2017-07-01

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).

Até há uma instrução mnemónica que usa a palavra oct.): 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.

 4
Author: Peter Cordes, 2017-07-01 10:52:17