Mercurial > repos > blastem
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 } |