Mercurial > repos > blastem
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test_arm.c Sun Feb 23 21:37:19 2014 -0800 @@ -0,0 +1,29 @@ +#include <stdio.h> +#include "gen_arm.h" + +typedef int32_t (*fib_fun)(int32_t); + +int main(int arc, char **argv) +{ + code_info code; + init_code_info(&code); + uint32_t *fib = code.cur; + subi(&code, r0, r0, 2, SET_COND); + movi_cc(&code, r0, 1, NO_COND, CC_LT); + bx_cc(&code, lr, CC_LT); + pushm(&code, LR | R4); + mov(&code, r4, r0, NO_COND); + bl(&code, fib); + mov(&code, r1, r0, NO_COND); + addi(&code, r0, r4, 1, NO_COND); + mov(&code, r4, r1, NO_COND); + bl(&code, fib); + add(&code, r0, r4, r0, NO_COND); + popm(&code, LR | R4); + bx(&code, LR); + + fib_fun fibc = (fib_fun)fib; + printf("fib(10): %d\n", fibc(10)); + + return 0; +}