Browse Source
* Only build standard library for JS target * Add initial data structures for QBE generator * Allow generators to return an error Required for QBE generator * qbe: implement function generation * qbe: generate integer literal expression * qbe: generate return with expression * qbe: generate boolean expression * qbe: implement most of binary operations * qbe: store a type in scope maps * qbe: implement variable access expression * qbe: implement function declarations * qbe: implement if/else * qbe: implement while loops * qbe: implement break in loops * qbe: implement continue * qbe: implement expression statement * qbe: implement function calls * qbe: implement assignment for variables * qbe: add QbeValue, use it instead of temporaries With old approach, it was not possible for function call instruction to accept a $-global value (for static strings), as well as having an inconsistent API for QbeInstr::Copy because of Either<...>. QbeValue can hold either a temporary, global or a constant literal. This allows it to be used everywhere, without hacks like Either for copy. * qbe: implement string literals * qbe: move Assign into generate_assignment * qbe: add typedefs * qbe: generate offset table for structs * qbe: implement struct initialization * qbe: resolve struct variable types * qbe: convert assignment QBE statements to base types This prevents generating incorrect IR with structs * qbe: implement field access * qbe: do not cast to ABI types in scope * qbe: implement assignments to field access * qbe: store loop labels as a stack Fixes issues when using continue/break in nested loops. * docs: add QBE to supported backends * Add QBE backend to changelog * qbe: implement assignment BinOps (e.g. +=) * qbe: resolve arrays in variable types * qbe: implement array initialization * qbe: add aggregate type fills (e.g. { w 12 }) * qbe: generate aggregate types for arraystraversable-ast
Alexey
3 years ago
committed by
GitHub
10 changed files with 1371 additions and 21 deletions
Loading…
Reference in new issue