That does not look dynamic. The statement -- "uninitialized" is vague, especially in the section of data. This thing is not to take up memory space at the start of the program, the entire intent of dynamic allocations.
There is a malloc for it in the code. If it is like a typedef in C, I can essentially do defStruc *mptrstruct = NULL; and you would have to do the void* malloc(nsize) to get the memory allocation and that structure with mptrstuct = malloc(sizeof(mptstruct)). Any time is use the pointer I have access to the structure map. Assembly should be no different though it is done with the processor with that structure. It contributes to the pointer math relative address plus offset. In my code
section .bss
pPtrCont resb 8 ;null pointer once set to zero, non-zero it is location in memory.
section .text
;after the call to malloc, somewhere, to put on the heap
mov rax, [ [pPtrCont] + ptrCont.m_pOutputFile] ;with in the type def for byte in the block of data at byte 9 with the 8 bytes that make it up, where ever that thing is is memory
; the compiler is arguing with me again in its "limitation" because that is a syntax error: expecting a comma or eol.
; one pass it will assemble and another it won't. I had not seen the size member talked about in the docs
; all it is pointer math, with convenient concepts. It is math with addresses.
; the work around looks like
mov rax, [pPtrCont]
add rax, 8
mov [rax], mydata
Shawn