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}