컴퓨터/C/C++

공용체로 레지스트 표현;;

Hikasiru 2006. 3. 24. 22:18
#include

struct hregs{
    char al;
    char ah;
};

union regs{
    struct hregs h;
    int ax;
};

int main()
{
    union regs reg;

    reg.h.ah = 0x1A;
    reg.h.al = 0x2B;
    printf("ah:%X\n", reg.h.ah);
    printf("al:%X\n", reg.h.al);
    printf("ax:%hX\n", reg.ax);


    return 0;
}


Microsoft C에 있어서의 레지스터 표현
/* word registers */

struct WORDREGS {
    unsigned int ax;
    unsigned int bx;
    unsigned int cx;
    unsigned int dx;

    unsigned int si;
    unsigned int di;

    unsigned int clags;
};

/* byte registers */

struct BYTEREGS {
    unsigned char al, ah;
    unsigned char bl, bh;
    unsigned char cl, ch;
    unsigned char dl, dh;
};

/* general purpose registers union -
* overlays the corresponding word and byte registers.
*/

union REGS {
    struct WORDREGS x;
    struct BYTEREGS h;
};