Hello there,
I'm translating the following C to NASM:
/* The symbol table for a.out. */
typedef struct aout_symbol_table
{
unsigned long tabsize;
unsigned long strsize;
unsigned long addr;
unsigned long reserved;
} aout_symbol_table_t;
/* The section header table for ELF. */
typedef struct elf_section_header_table
{
unsigned long num;
unsigned long size;
unsigned long addr;
unsigned long shndx;
} elf_section_header_table_t;
/* The Multiboot information. */
typedef struct multiboot_info
{
unsigned long flags;
unsigned long mem_lower;
unsigned long mem_upper;
unsigned long boot_device;
unsigned long cmdline;
unsigned long mods_count;
unsigned long mods_addr;
union
{
aout_symbol_table_t aout_sym;
elf_section_header_table_t elf_sec;
} u;
unsigned long mmap_length;
unsigned long mmap_addr;
} multiboot_info_t;
Using the xstruc macros. I've got the following so far:
;A.out Symble Table
xstruc aout_symble_table
xitemw tabsize
xitemw strsize
xitemw addr
xitemw reserved
xends
;ELF Section Header Table
xstruc elf_section_header_table
xitemw num
xitemw size
xitemw addr
xitemw shndx
xends
;Multiboot Information
xstruc multiboot_information
xitemw flags
xitemw memory_lower
xitemw memory_upper
xitemw boot_device
xitemw cmdline
xitemw mods_count
xitemw mods_addr
xunion u
xends
xends
However, I don't know how to translate the union part of the C structure i.e.
union
{
aout_symbol_table_t aout_sym;
elf_section_header_table_t elf_sec;
} u;
I'd prefer not to define the other two structures within the union its self.
Cheers for you help,
Pete