¿Como declarar un array dentro de una estructura en MASM?

Iniciado por Usuario887, 23 Febrero 2021, 22:42 PM

0 Miembros y 1 Visitante están viendo este tema.

Usuario887

Llevo googleandolo 20 minutos y no logro encontrar una forma de que esto:

Código (asm) [Seleccionar]
_struct struct
data0 db 64 dup (?)
data1 db 64 dup (?)
_struct ends


funcione correctamente. Cuando compruebo el tamaño de _struct es 64 (cuando deberia ser 128).

¿Como declaro un array dentro de una estructura correctamente en MASM?

Segun la MSDN:

Citarname STRUCT ⟦alignment⟧ ⟦, NONUNIQUE⟧
field-declarations
name ENDS
https://docs.microsoft.com/es-es/cpp/assembler/masm/struct-masm?view=msvc-160

¿Cual es exactamente la sintaxis de field-declarations cuando se trata de un array?

Gracias de antemano.
Saludos.

Eternal Idol

¿En que te basas para afirmar que la estructura ocupa 64 bytes? El WinDbg no concuerda:

0:000> dt hola!_struct /v
struct _struct, 2 elements, 0x80 bytes
   +0x000 data0            : UChar
   +0x040 data1            : UChar

Código (asm) [Seleccionar]
mov eax, sizeof _struct

Eso pone 0x80 en eax.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Usuario887

Bueno, 20 minutos perdidos...
Me basada en la salida de esto:

Código (asm) [Seleccionar]

invoke printf, __txt ("%d", 0dh, 0ah), sizeof _struct


que producia 128 con dos arrays de 128 bytes, pero creo que habia escrito algo mal porque ahora si se ve 256...  :huh: