line decor
  
line decor
 
 
 
 

 
 

Handling "AT" Declarations

PL/M source code

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;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Translated C source code

#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;
}

 

 

 

 

 
 

 


Other Examples:

Handling "Based" variables

Handling "Literally" declarations

Handling boolean expressions

.