In other words you need a HLL front-end to write asm code.I know what you are saying, but you kinda missed my point.
I don't need dynamic structures (or even static ones!). I don't need the overhead of dynamic memory allocation. The hardware is fixed.
I just need an assembler pre-processor that can do more than just add and subtract integers and basic conditional assembly. Then I can write macros to build the structures for me at assembly time, abstracted away from the actual code.
BTW I'm not using dynamic memory allocation for this (the only usage is for special uncached memory for DMA physical transfers in the main program because of the pic32mz L-1 cache) because there is no need for it. The pointers, arrays and structures are used to index directly to cpu hardware register space with offsets for the required device parameter. Most of the end results of the pointer calculations result in a single atomic instruction to set/clear register bits in the cpu hardware.




