diff options
Diffstat (limited to 'src/old/c/test.c')
-rw-r--r-- | src/old/c/test.c | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/src/old/c/test.c b/src/old/c/test.c new file mode 100644 index 000000000..2ab4a78e8 --- /dev/null +++ b/src/old/c/test.c @@ -0,0 +1,138 @@ + + +/* + * 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; +} |