diff options
| author | Franklin Wei <git@fwei.tk> | 2015-11-18 20:56:08 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2015-11-18 20:56:08 -0500 |
| commit | 3127e63aae54f787e2f55523d9e3b7d5a060d834 (patch) | |
| tree | 20e78631bed98f8f2bbcbfd82e8dcdfa743ac59b /target | |
| parent | 814fc20cf78a9e10b603fba789be3ccd2830629d (diff) | |
| download | ducky-3127e63aae54f787e2f55523d9e3b7d5a060d834.zip ducky-3127e63aae54f787e2f55523d9e3b7d5a060d834.tar.gz ducky-3127e63aae54f787e2f55523d9e3b7d5a060d834.tar.bz2 ducky-3127e63aae54f787e2f55523d9e3b7d5a060d834.tar.xz | |
barely working ducky-to-C transcompiler
Diffstat (limited to 'target')
| -rw-r--r-- | target/unix/main.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/target/unix/main.c b/target/unix/main.c index 278b889..ee2b696 100644 --- a/target/unix/main.c +++ b/target/unix/main.c @@ -4,12 +4,13 @@ #define COMPILE 1 #define INTERP 2 #define EXECUTE 3 +#define TRANSCOMPILE 4 char *progname; void arg_error(void) { - printf("Usage: %s [-cei] FILE\n", progname); + printf("Usage: %s [-ceit] FILE\n", progname); exit(EXIT_FAILURE); } @@ -28,6 +29,8 @@ int main(int argc, char *argv[]) action = INTERP; else if(!strcmp(argv[i], "-e")) action = EXECUTE; + else if(!strcmp(argv[i], "-t")) + action = TRANSCOMPILE; else file = argv[i]; } @@ -39,7 +42,8 @@ int main(int argc, char *argv[]) if(*((uint32_t*)header) == DUCKY_MAGIC) { printf("Detected ducky bytecode signature.\n"); - action = EXECUTE; + if(action != TRANSCOMPILE) + action = EXECUTE; } lseek(fd, 0, SEEK_SET); switch(action) @@ -54,6 +58,10 @@ int main(int argc, char *argv[]) case EXECUTE: ducky_vm(fd); break; + case TRANSCOMPILE: + out_fd = open("a.c", O_WRONLY | O_CREAT | O_TRUNC, 0644); + ducky_to_c(fd, out_fd); + break; default: break; } |