| |
| |
| /* |
| * automatic code generated from |
| * test.go in package "test" |
| */ |
| |
| // basic types |
| typedef unsigned char _T_U8; |
| typedef signed char _T_I8; |
| typedef unsigned short _T_U16; |
| typedef signed short _T_I16; |
| typedef unsigned long _T_U32; |
| typedef signed long _T_I32; |
| typedef unsigned long long _T_U64; |
| typedef signed long long _T_I64; |
| typedef float _T_F32; |
| typedef double _T_F64; |
| typedef double _T_F80; |
| typedef int _T_B; |
| typedef unsigned char* _T_P; |
| |
| #define offsetof(s, m) (_T_U32)(&(((s*)0)->m)) |
| |
| typedef struct{_T_U32 I1; _T_U32 I2; _T_U32 I3;} _T_I; |
| typedef struct{_T_U32 O1; _T_U32 O2;} _T_O; |
| |
| void test_main(void); |
| _T_O test_simple(_T_I); |
| int printf(char*, ...); |
| |
| // external variables |
| |
| void |
| test_main(void) |
| { |
| |
| // registers |
| register union |
| { |
| _T_U8 _R_U8; |
| _T_I8 _R_I8; |
| _T_U16 _R_U16; |
| _T_I16 _R_I16; |
| _T_U32 _R_U32; |
| _T_I32 _R_I32; |
| _T_U64 _R_U64; |
| _T_I64 _R_I64; |
| _T_F32 _R_F32; |
| _T_F64 _R_F64; |
| _T_F80 _R_F80; |
| _T_B _R_B; |
| _T_P _R_P; |
| } _U; |
| |
| // local variables |
| _T_I32 _V_3; // x |
| _T_I32 _V_4; // y |
| |
| { |
| _T_I I; |
| _T_O O; |
| I.I1 = 10; |
| I.I2 = 20; |
| I.I3 = 30; |
| O = test_simple(I); |
| _V_3 = O.O1; |
| _V_4 = O.O2; |
| } |
| |
| // 1 7 LOAD_I32 NAME a(1) p(3) l(7) x G0 INT32 |
| _U._R_I32 = _V_3; |
| |
| // 2 10 CMP_I32 I15 LITERAL a(1) l(10) INT32 |
| if(_U._R_I32 == 15) |
| |
| // 3 10 BEQ_I32 4 |
| goto _L4; |
| |
| printf("no 1 %d\n", _V_3); |
| |
| // 4 7 LOAD_I32 NAME a(1) p(4) l(7) y G0 INT32 |
| _L4: |
| _U._R_I32 = _V_4; |
| |
| // 5 11 CMP_I32 I50 LITERAL a(1) l(11) INT32 |
| if(_U._R_I32 == 50) |
| |
| // 6 11 BEQ_I32 7 |
| goto _L7; |
| |
| printf("no 2 %d\n", _V_4); |
| |
| // 7 0 END |
| _L7: |
| ; |
| } |
| |
| _T_O |
| test_simple(_T_I I) |
| { |
| |
| // registers |
| register union |
| { |
| _T_U8 _R_U8; |
| _T_I8 _R_I8; |
| _T_U16 _R_U16; |
| _T_I16 _R_I16; |
| _T_U32 _R_U32; |
| _T_I32 _R_I32; |
| _T_U64 _R_U64; |
| _T_I64 _R_I64; |
| _T_F32 _R_F32; |
| _T_F64 _R_F64; |
| _T_F80 _R_F80; |
| _T_B _R_B; |
| _T_P _R_P; |
| } _U; |
| |
| _T_O O; |
| |
| int ia, ib, ic; |
| ia = I.I1; |
| ib = I.I2; |
| ic = I.I3; |
| |
| O.O1 = ia+5; |
| O.O2 = ib+ic; |
| return O; |
| } |
| |
| int |
| main(void) |
| { |
| test_main(); |
| return 0; |
| } |