如何在C++中获取eax寄存器的结构

how to acquire a structure of eax register in c++

如果我使用 struct,它会占用内存,这与实际寄存器不同,其中 al 和 ah 一起构成 ax 寄存器并且 eax 寄存器与 ax 寄存器合并。如果我使用 union,al 和 ah 值将在同一个地方,实际上,它们是 2 个独立的寄存器。我怎样才能获得 eax 寄存器的结构?我注意到 dos.h header(在 c 中)有“union regs”,它具有我需要的结构。但是在我的机器上,没有这样的“联合规则”。到现在为止,我已经尝试过:-

struct regs {
    uint32 eax, ebx, ecx, edx, esi, edi, esp, ebp;
    uint16 ax, bx, cx, dx;
    uint8 ah, al, bh, bl, ch, cl, dh, dl;
};

@Sebastian 提到我应该结合结构和联合来获得那种架构。我不确定嵌套结构和联合是否会,但我试过了并且它起作用了:-

union {int32 eax; union {int16 ax; struct {int8 ah, al;};};} reg_eax;

请注意,只要同一级别的不同成员没有相同的名称,就可以使用没有名称的结构或联合。