struct DWORDREGS { unsigned int eax; unsigned int ebx; unsigned int ecx; unsigned int edx; unsigned int esi; unsigned int edi; unsigned int cflag; }; /* word registers */ struct WORDREGS { unsigned short ax; __FILLER(_1) unsigned short bx; __FILLER(_2) unsigned short cx; __FILLER(_3) unsigned short dx; __FILLER(_4) unsigned short si; __FILLER(_5) unsigned short di; __FILLER(_6) unsigned int cflag; }; /* byte registers */ struct BYTEREGS { unsigned char al, ah; __FILLER(_1) unsigned char bl, bh; __FILLER(_2) unsigned char cl, ch; __FILLER(_3) unsigned char dl, dh; __FILLER(_4) }; /* general purpose registers union - overlays the corresponding dword, * word, and byte registers. */ union REGS { struct DWORDREGS x; struct WORDREGS w; struct BYTEREGS h; }; #define _REGS REGS struct SREGS { unsigned short es, cs, ss, ds; unsigned short fs, gs; }; #define _SREGS SREGS