aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2015-11-21 17:53:37 -0500
committerFranklin Wei <git@fwei.tk>2015-11-21 17:53:37 -0500
commit03a7066353fad59b7c29b57baa94f84bcc5cfcda (patch)
tree46720390cd011714698d3daedfc03ce7128d9979
parentdf27295ce6e79f409f677da884d32bd9675733be (diff)
downloadducky-03a7066353fad59b7c29b57baa94f84bcc5cfcda.zip
ducky-03a7066353fad59b7c29b57baa94f84bcc5cfcda.tar.gz
ducky-03a7066353fad59b7c29b57baa94f84bcc5cfcda.tar.bz2
ducky-03a7066353fad59b7c29b57baa94f84bcc5cfcda.tar.xz
some stuff
-rwxr-xr-xexamples/primecount.ds2
-rw-r--r--src/emitc.c12
2 files changed, 9 insertions, 5 deletions
diff --git a/examples/primecount.ds b/examples/primecount.ds
index 8bb4fc8..91c8d13 100755
--- a/examples/primecount.ds
+++ b/examples/primecount.ds
@@ -10,7 +10,7 @@ LBL test_number
LBL test_loop
IF !(n % iter); GOTO composite
INC iter
- IF iter < stop; GOTO test_loop
+ IF iter <= stop; GOTO test_loop
INC primes
LBL composite
INC n
diff --git a/src/emitc.c b/src/emitc.c
index afa8fe7..bf79a47 100644
--- a/src/emitc.c
+++ b/src/emitc.c
@@ -873,13 +873,17 @@ void ducky_to_c(int fd, int out)
write_src("int main()\n");
write_src("{\n");
- write_src("/* this uses labels as values */\n");
- write_src("void *jump_table[%d];\n\n", num_lines + 1);
- write_src("/* initialize the jump table */\n");
+ write_src("/* this uses labels as values, a GCC extension */\n");
+
+
+ write_src("const void *jump_table[%d] = ", num_lines + 1);
+ write_src("{\n");
+ write_src("NULL,\n");
for(int i = 1; i <= num_lines; ++i)
{
- write_src("jump_table[%d] = &&label_%d;\n", i, i);
+ write_src("&&label_%d,\n", i);
}
+ write_src("};\n");
write_src_noindent("\n");
/* and... compile! */