aboutsummaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2015-11-10 17:19:33 -0500
committerFranklin Wei <git@fwei.tk>2015-11-10 17:19:33 -0500
commit1511952de93d7a85bb3b252d6ed47d434ff208f6 (patch)
tree83ace48d8dbeffa62050c847dfe3db10fd303c91 /target
parent768628ea1767b966418f21dced0572e222a6208b (diff)
downloadducky-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.c26
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;
}