Add all the assignment code.
Signed-off-by: jmug <u.g.a.mariano@gmail.com>
This commit is contained in:
parent
58c6b1f81c
commit
cfe502c598
1277 changed files with 48709 additions and 1 deletions
76
hw4/README
Normal file
76
hw4/README
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
Using main.native:
|
||||
|
||||
main.native acts like the clang compiler. Given several .ll, .c, and .o files,
|
||||
it will compile the .ll files to .s files (using the Compiler Design backend)
|
||||
and then combine the results with the .c and .o files to produce an executable
|
||||
named a.out. You can also compile the .ll files using clang instead of the
|
||||
Compiler Design backend, which can be useful for testing purposes.
|
||||
|
||||
|
||||
* To run the automated test harness do:
|
||||
./main.native --test
|
||||
|
||||
* To compile ll files using the Compiler Design backend:
|
||||
./main.native path/to/foo.ll
|
||||
|
||||
- creates output/foo.s backend assembly code
|
||||
- creates output/foo.o assembled object file
|
||||
- creates a.out linked executable
|
||||
|
||||
NOTE: by default the .s and .o files are created in
|
||||
a directory called output, and the filenames are
|
||||
chosen so that multiple runs of the compiler will
|
||||
not overwrite previous outputs. foo.ll will be
|
||||
compiled first to foo.s then foo_1.s, foo_2.s, etc.
|
||||
|
||||
|
||||
* To compile ll files using the clang backend:
|
||||
./main.native --clang path/to/foo.ll
|
||||
|
||||
* Useful flags:
|
||||
--print-oat
|
||||
pretty prints the Oat abstract syntax to the terminal
|
||||
|
||||
--print-ll
|
||||
echoes the ll program to the terminal
|
||||
|
||||
--print-x86
|
||||
echoes the resulting .s file to the terminal
|
||||
|
||||
--interpret-ll
|
||||
runs the ll file through the reference interpreter
|
||||
and outputs the results to the console
|
||||
|
||||
--execute-x86
|
||||
runs the resulting a.out file natively
|
||||
(applies to either the Compiler Design backend or clang-compiled code)
|
||||
|
||||
--clang compiles to assembly using clang, not the Compiler Design backend
|
||||
|
||||
-v
|
||||
generates verbose output, showing which commands are used
|
||||
for linking, etc.
|
||||
|
||||
-op <dirname>
|
||||
change the output path [DEFAULT=output]
|
||||
|
||||
-o
|
||||
change the generated executable's name [DEFAULT=a.out]
|
||||
|
||||
-S
|
||||
stop after generating .s files
|
||||
|
||||
-c
|
||||
stop after generating .o files
|
||||
|
||||
-h or --help
|
||||
display the list of options
|
||||
|
||||
* Example uses:
|
||||
|
||||
Run the test case /programs/factrect.ll using the Compiler Design backend:
|
||||
|
||||
|
||||
./main.native --execute-x86 programs/factrect.ll
|
||||
--------------------------------------------------------------- Executing: a.out
|
||||
* a.out returned 120
|
||||
Loading…
Add table
Add a link
Reference in a new issue