diff options
| author | Franklin Wei <git@fwei.tk> | 2015-11-10 17:19:33 -0500 |
|---|---|---|
| committer | Franklin Wei <git@fwei.tk> | 2015-11-10 17:19:33 -0500 |
| commit | 1511952de93d7a85bb3b252d6ed47d434ff208f6 (patch) | |
| tree | 83ace48d8dbeffa62050c847dfe3db10fd303c91 /target | |
| parent | 768628ea1767b966418f21dced0572e222a6208b (diff) | |
| download | ducky-1511952de93d7a85bb3b252d6ed47d434ff208f6.zip ducky-1511952de93d7a85bb3b252d6ed47d434ff208f6.tar.gz ducky-1511952de93d7a85bb3b252d6ed47d434ff208f6.tar.bz2 ducky-1511952de93d7a85bb3b252d6ed47d434ff208f6.tar.xz | |
add a rudimentary bytecode compiler
Diffstat (limited to 'target')
| -rw-r--r-- | target/unix/main.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/target/unix/main.c b/target/unix/main.c index a2db705..d4644d7 100644 --- a/target/unix/main.c +++ b/target/unix/main.c @@ -3,15 +3,31 @@ int main(int argc, char *argv[]) { - if(argc == 2) + if(argc >= 2) { - int fd = open(argv[1], O_RDONLY); - ducky_main(fd); - close(fd); + if(strcmp(argv[1], "-c") == 0) + { + if(argc == 3) + { + int fd = open(argv[2], O_RDONLY); + int out_fd = open("a.out", O_WRONLY | O_CREAT, 0644); + ducky_compile(fd, true, out_fd); + close(fd); + close(out_fd); + } + else + printf("expected filename\n"); + } + else + { + int fd = open(argv[1], O_RDONLY); + ducky_main(fd, false); + close(fd); + } } else { - printf("Usage: %s FILE\n", argv[0]); + printf("Usage: %s [-c] FILE\n", argv[0]); } return 0; } |