summaryrefslogtreecommitdiffstats
path: root/src/code-generation.c
Commit message (Expand)AuthorAgeFilesLines
* Don't call ccmmc_register_alloc() after saving registers for write functionHW6Ting-Wei Lan2016-01-211-4/+8
* Allow using expressions as arguments of write functionTing-Wei Lan2016-01-211-2/+2
* Add missing _caller_save() and _save_arguments()kugwa2016-01-211-0/+3
* Don't replace main with _start_MAINTing-Wei Lan2016-01-211-1/+1
* Don't call ccmmc_register_alloc() after saving registers for function callsTing-Wei Lan2016-01-211-18/+18
* Reverse the order of arguments on the stackTing-Wei Lan2016-01-211-3/+8
* Fix stack restoration after function callsTing-Wei Lan2016-01-211-1/+1
* sxtw x__, w__kugwa2016-01-211-1/+1
* Save arguments before calling any functionTing-Wei Lan2016-01-201-16/+20
* Support calling functions with argumentsTing-Wei Lan2016-01-201-29/+217
* Fix the problem of initializing local variableskugwa2016-01-191-11/+16
* Complete code-gen of for statementkugwa2016-01-181-2/+51
* Complete global array referencekugwa2016-01-181-2/+52
* Change mul 4 to lsl 2kugwa2016-01-181-11/+4
* Fix calc_array_offset()kugwa2016-01-181-14/+18
* Callers have to pass extend_name[]HW5kugwa2016-01-031-4/+6
* sxt -> sxtwkugwa2016-01-031-17/+23
* Add a function to get the name of 64 bit registerskugwa2016-01-031-2/+14
* Add missing ccmmc_register_lock() in store_variable()kugwa2016-01-031-0/+2
* Complete array reference for storing local variableskugwa2016-01-031-18/+41
* Complete array reference for loading local variableskugwa2016-01-031-21/+110
* Use adrp and add to address global variablesTing-Wei Lan2016-01-031-4/+6
* Fix linking error caused by missing .align directiveTing-Wei Lan2016-01-031-0/+1
* Add missing colons after label namesTing-Wei Lan2016-01-031-5/+5
* Don't add a newline when writing a stringTing-Wei Lan2016-01-031-1/+1
* fmov -> mov, fmov cannot be used to move integer registersTing-Wei Lan2016-01-031-1/+1
* Fix syntax error when accessing global variablesTing-Wei Lan2016-01-031-2/+4
* Drop trailing whitespacesTing-Wei Lan2016-01-031-2/+2
* Apply register managementkugwa2016-01-031-127/+184
* Rewrite names for read, fread, and the overloaded write functionTing-Wei Lan2016-01-031-1/+34
* Temporarily workaround the wrong return labelTing-Wei Lan2016-01-031-0/+10
* Rewrite the name of main function to work with TA's broken toolchainTing-Wei Lan2016-01-031-6/+12
* Add a function to handle function calls to reduce duplicate codeTing-Wei Lan2016-01-031-6/+9
* Complete code-gen of if-else statementkugwa2016-01-031-3/+56
* Workaround large immediate by loading constant offsets from memoryTing-Wei Lan2016-01-021-4/+12
* Free registers after generating condition code in while statementkugwa2016-01-021-0/+6
* Generate code for return statementsTing-Wei Lan2016-01-021-16/+38
* Floating-point return value is in s0Ting-Wei Lan2016-01-021-2/+9
* Complete code-gen of while statementkugwa2016-01-021-2/+34
* Remove the assert() in the function call case of generating exprkugwa2016-01-021-1/+1
* Handle function calls in exprkugwa2016-01-021-1/+4
* Generate code for function callskugwa2016-01-021-0/+3
* fneg instruction should use floating-point registersTing-Wei Lan2016-01-021-1/+1
* div -> sdiv, there is no instruction called divTing-Wei Lan2016-01-021-1/+1
* Generate code to initialize variables with constantsTing-Wei Lan2016-01-021-35/+44
* No code has to be generated for typedefTing-Wei Lan2016-01-021-1/+2
* Generate code for expressions and assignmentsTing-Wei Lan2016-01-021-2/+385
* Add function prologue and epilogueTing-Wei Lan2016-01-021-2/+8
* Use x30 as the frame pointerTing-Wei Lan2016-01-021-0/+1
* Add a simple function to check whether an immediate is too largeTing-Wei Lan2016-01-021-8/+12
* Add .size and .type to all global symbols except for uninitialized variablesTing-Wei Lan2016-01-021-6/+20
* Can allocate many tmpskugwa2016-01-021-5/+5
* Immediate is only safe to when the number is <= 4096Ting-Wei Lan2015-12-311-2/+2
* Process local variables declared in else blocksTing-Wei Lan2015-12-311-0/+4
* Properly deallocate the register poolTing-Wei Lan2015-12-311-0/+2
* Export functions and global variables as global symbolsTing-Wei Lan2015-12-311-4/+9
* Use ldr to prevent immediate from becoming too largeTing-Wei Lan2015-12-311-3/+28
* Initialize the register poolkugwa2015-12-311-0/+1
* Add code for register managementkugwa2015-12-311-0/+1
* Statements should not change the fp offsetTing-Wei Lan2015-12-311-13/+11
* Generate fp offsets for local variablesTing-Wei Lan2015-12-311-1/+99
* Generate code for global variable declarationsTing-Wei Lan2015-12-311-6/+45
* Reset the state of the symbol table before generating codeTing-Wei Lan2015-12-311-0/+2
* Add the missing vim modeline in code-generation.cTing-Wei Lan2015-12-311-0/+2
* Complete the NORMAL_ID case in generate_global_variable()kugwa2015-12-301-1/+19
* Add 3 static code-generation functionskugwa2015-12-301-0/+28
* Drop any_error from state and add asm_output to stateTing-Wei Lan2015-12-301-1/+1
* Add the code-generation phasekugwa2015-12-301-0/+13