main test_arm.c
 1#include <stdio.h>
 2#include "gen_arm.h"
 3
 4typedef int32_t (*fib_fun)(int32_t);
 5
 6int main(int arc, char **argv)
 7{
 8	code_info code;
 9	init_code_info(&code);
10	uint32_t *fib = code.cur;
11	subi(&code, r0, r0, 2, SET_COND);
12	movi_cc(&code, r0, 1, NO_COND, CC_LT);
13	bx_cc(&code, lr, CC_LT);
14	pushm(&code, LR | R4);
15	mov(&code, r4, r0, NO_COND);
16	bl(&code, fib);
17	mov(&code, r1, r0, NO_COND);
18	addi(&code, r0, r4, 1, NO_COND);
19	mov(&code, r4, r1, NO_COND);
20	bl(&code, fib);
21	add(&code, r0, r4, r0, NO_COND);
22	popm(&code, LR | R4);
23	bx(&code, lr);
24
25	fib_fun fibc = (fib_fun)fib;
26	printf("fib(10): %d\n", fibc(10));
27
28	return 0;
29}