Test Foro de elhacker.net SMF 2.1

Programación => Programación General => ASM => Mensaje iniciado por: Usuario887 en 23 Febrero 2021, 22:42 PM

Título: ¿Como declarar un array dentro de una estructura en MASM?
Publicado por: Usuario887 en 23 Febrero 2021, 22:42 PM
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 (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.
Título: Re: ¿Como declarar un array dentro de una estructura en MASM?
Publicado por: Eternal Idol en 23 Febrero 2021, 22:48 PM
¿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.
Título: Re: ¿Como declarar un array dentro de una estructura en MASM?
Publicado por: Usuario887 en 23 Febrero 2021, 23:03 PM
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: