From 16a6bd520191171fe6741c45eb823a4f0053e14a Mon Sep 17 00:00:00 2001 From: Mike Pavone Date: Sun, 23 Feb 2014 21:37:19 -0800 Subject: Added untested code for generating ARM machine code --- test_arm.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 test_arm.c (limited to 'test_arm.c') diff --git a/test_arm.c b/test_arm.c new file mode 100644 index 0000000..48f7971 --- /dev/null +++ b/test_arm.c @@ -0,0 +1,29 @@ +#include +#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; +} -- cgit v1.2.3