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;
+}