oo : do;
/* This is a demo of translating variables with the "at" attribute
to unions in the C language.
*/
declare a byte;
/* variable "at_a" is declared to share the same memory space
with "a" */
declare at_a word at (@a);
declare aa structure ( a byte , bb word , xy dword);
/* variable "b" is declared to
share the same memory space with "aa.xy" */
declare b word at (@aa.xy);
declare c dword at (@b);
aa.xy = a;
at_a = b;
end;
|
#include "..\C\builtin.h"
typedef struct {
BYTE a;
WORD bb;
DWORD xy;
} StrucT1;
union {
/* This is a demo of translating variables with the "at" attribute to unions in the C language.
*/
BYTE a;
/* variable "at_a" is declared to share the same memory space with "a" */
WORD at_a;
} Un1;
union {
StrucT1 aa;
/* variable "b" is declared to share the same
memory space with "aa.xy" */
struct {
BYTE Offset1;
WORD Offset2;
WORD b;
} St1;
struct {
BYTE Offset1;
WORD Offset2;
DWORD c;
} St2;
} Un2;
main()
{
Un2.aa.xy = Un1.a;
Un1.at_a = Un2.St1.b;
}
|