# 所以你★star★了吗!!!
# millet porridge III --stage3
```
package main
var a int=1;
func add1(x,y int) (int, int) {
x = x + 1
y = y + 1
return x,y
}
func main() {
var a int;
var b int = 4-(2+4-4)+3;
a=0;
if a < 20 {
a = 2;
} else {
if a < 10 {
a = 1;
} else {
a = 3;
}
}
for i := 0; i <= 10; i++ {
a = i;
}
a,b=add1(a,b)
a,b=add1(1,2)
// var
}
```
```
9 Operater: ADD src1: IMM: 2 src2: IMM: 4 dst: VAR: T8
10 Operater: SUB src1: VAR: T8 src2: IMM: 4 dst: VAR: T10
11 Operater: SUB src1: IMM: 4 src2: VAR: T10 dst: VAR: T11
12 Operater: ADD src1: VAR: T11 src2: IMM: 3 dst: VAR: T13
13 Operater: ASSIGN src1: VAR: T13 src2: NULL_: dst: VAR: b
14 Operater: ASSIGN src1: IMM: 0 src2: NULL_: dst: VAR: a
15 Operater: IFGE src1: VAR: a src2: IMM: 20 dst: VAR: ELSE0
16 Operater: ASSIGN src1: IMM: 2 src2: NULL_: dst: VAR: a
17 Operater: GOTO src1: NULL_: ENDIF0 src2: NULL_: dst: NULL_:
18 Operater: LABEL src1: NULL_: ELSE0 src2: NULL_: dst: NULL_:
19 Operater: IFGE src1: VAR: a src2: IMM: 10 dst: VAR: ELSE1
20 Operater: ASSIGN src1: IMM: 1 src2: NULL_: dst: VAR: a
21 Operater: GOTO src1: NULL_: ENDIF1 src2: NULL_: dst: NULL_:
22 Operater: LABEL src1: NULL_: ELSE1 src2: NULL_: dst: NULL_:
23 Operater: ASSIGN src1: IMM: 3 src2: NULL_: dst: VAR: a
24 Operater: LABEL src1: NULL_: ENDIF1 src2: NULL_: dst: NULL_:
25 Operater: LABEL src1: NULL_: ENDIF0 src2: NULL_: dst: NULL_:
26 Operater: ASSIGN src1: IMM: 0 src2: NULL_: dst: VAR: i
27 Operater: IFGT src1: VAR: i src2: IMM: 10 dst: VAR:ENDFOR0
28 Operater: LABEL src1: NULL_:FORLOOP0 src2: NULL_: dst: NULL_:
29 Operater: ASSIGN src1: VAR: i src2: NULL_: dst: VAR: a
30 Operater: ADD src1: VAR: i src2: IMM: 1 dst: VAR: i
31 Operater: IFLE src1: VAR: i src2: IMM: 10 dst: VAR:FORLOOP0
32 Operater: LABEL src1: NULL_:ENDFOR0 src2: NULL_: dst: NULL_:
33 Operater: RET src1: VAR: T22 src2: NULL_: dst: NULL_:
34 Operater: RET src1: VAR: T23 src2: NULL_: dst: NULL_:
35 Operater: PARA src1: VAR: a src2: NULL_: dst: NULL_:
36 Operater: PARA src1: VAR: b src2: NULL_: dst: NULL_:
37 Operater: CALL src1: VAR: add1 src2: NULL_: dst: NULL_:
38 Operater: ASSIGN src1: VAR: T22 src2: NULL_: dst: VAR: a
39 Operater: ASSIGN src1: VAR: T23 src2: NULL_: dst: VAR: b
40 Operater: RET src1: VAR: T26 src2: NULL_: dst: NULL_:
41 Operater: RET src1: VAR: T27 src2: NULL_: dst: NULL_:
42 Operater: PARA src1: IMM: 1 src2: NULL_: dst: NULL_:
43 Operater: PARA src1: IMM: 2 src2: NULL_: dst: NULL_:
44 Operater: CALL src1: VAR: add1 src2: NULL_: dst: NULL_:
45 Operater: ASSIGN src1: VAR: T26 src2: NULL_: dst: VAR: a
46 Operater: ASSIGN src1: VAR: T27 src2: NULL_: dst: VAR: b
----------------------
1 Operater: FUN_PARA src1: VAR: x src2: NULL_: dst: NULL_:
2 Operater: FUN_PARA src1: VAR: y src2: NULL_: dst: NULL_:
3 Operater: ADD src1: VAR: x src2: IMM: 1 dst: VAR: T2
4 Operater: ASSIGN src1: VAR: T2 src2: NULL_: dst: VAR: x
5 Operater: ADD src1: VAR: y src2: IMM: 1 dst: VAR: T4
6 Operater: ASSIGN src1: VAR: T4 src2: NULL_: dst: VAR: y
7 Operater: FUN_RET src1: VAR: x src2: NULL_: dst: NULL_:
8 Operater: FUN_RET src1: VAR: y src2: NULL_: dst: NULL_:
----------------------
0 Operater: ASSIGN src1: IMM: 1 src2: NULL_: dst: VAR: a
----------------------
```
生成汇编:
```shell
./tjugo ../example/.go
```
运行汇编:
```shell
. ../scripts/run_asm.sh
```