mirror of
https://github.com/golang/go
synced 2024-10-06 20:21:21 -06:00
139 lines
2.1 KiB
C
139 lines
2.1 KiB
C
|
|
||
|
|
||
|
/*
|
||
|
* 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;
|
||
|
}
|