comparison test_arm.c @ 553:1af6c1052993

Added untested code for generating ARM machine code
author Mike Pavone <pavone@retrodev.com>
date Sun, 23 Feb 2014 21:37:19 -0800
parents
children 474270dbff15
comparison
equal deleted inserted replaced
552:0687b05061dd 553:1af6c1052993
1 #include <stdio.h>
2 #include "gen_arm.h"
3
4 typedef int32_t (*fib_fun)(int32_t);
5
6 int 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 }