|
|
|
|
|
by chrisaycock
2842 days ago
|
|
The appendix (Converting Stack-Based OpCodes into Register Operations) is the most interesting part to me. Targeting a stack machine is much easier when writing a compiler for the first time, but real-world machines are generally register based. I couldn't find the authors' logic in a cursory look at the source code. Does anyone know where it actually is? |
|
In general this is true, here however, we are targeting LLMV IR which is register based with infinite registers; so it's kinda easy again :-) The hard part, register allocation, is actually done by LLVM.
This class implements the conversion: https://github.com/lambdageek/mono/blob/mjit/mcs/class/Mono....