version 1.1, 2001/04/29 11:28:24
|
version 1.3, 2002/06/02 17:02:56
|
Line 22
|
Line 22
|
#include <stdlib.h> |
#include <stdlib.h> |
#include <stdio.h> |
#include <stdio.h> |
#include <unistd.h> |
#include <unistd.h> |
|
extern int optind; |
|
|
#include <assert.h> |
#include <assert.h> |
#include "mini.h" |
#include "mini.h" |
|
|
Line 52 void printarg_a(char *a)
|
Line 54 void printarg_a(char *a)
|
fprintf(vm_out, "%p ", a); |
fprintf(vm_out, "%p ", a); |
} |
} |
|
|
|
void printarg_Cell(Cell i) |
|
{ |
|
fprintf(vm_out, "0x%lx ", i); |
|
} |
|
|
/* This language has separate name spaces for functions and variables; |
/* This language has separate name spaces for functions and variables; |
this works because there are no function variables, and the syntax |
this works because there are no function variables, and the syntax |
makes it possible to differentiate between function and variable |
makes it possible to differentiate between function and variable |
Line 159 int main(int argc, char **argv)
|
Line 166 int main(int argc, char **argv)
|
default: |
default: |
case 'h': |
case 'h': |
help: |
help: |
fprintf(stderr, "\ |
fprintf(stderr, "Usage: %s [options] file\nOptions:\n-h Print this message and exit\n-d disassemble VM program before execution\n-p profile VM code sequences (output on stderr)\n-t trace VM code execution (output on stderr)\n", |
Usage: %s [options] file\n |
|
Options:\n |
|
-h Print this message and exit\n\ |
|
-d disassemble VM program before execution\n\ |
|
-p profile VM code sequences (output on stderr)\n\ |
|
-t trace VM code execution (output on stderr)\n\ |
|
", |
|
argv[0]); |
argv[0]); |
exit(1); |
exit(1); |
case 'd': |
case 'd': |
Line 200 Options:\n
|
Line 200 Options:\n
|
exit(1); |
exit(1); |
|
|
start=vmcodep; |
start=vmcodep; |
gen_main_end(); |
gen_main_end(); |
|
vmcode_end=vmcodep; |
|
|
if (disassembling) |
if (disassembling) |
vm_disassemble(vm_code, vmcodep, vm_prim); |
vm_disassemble(vm_code, vmcodep, vm_prim); |
|
|
printf("result = %ld\n",runvm(start, stack+STACK_SIZE-1, NULL)); |
printf("result = %ld\n",runvm(start, stack+STACK_SIZE-1, NULL)); |
|
|
|
if (profiling) |
|
vm_print_profile(vm_out); |
|
|
return 0; |
return 0; |
} |
} |