Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Don't call ccmmc_register_alloc() after saving registers for write functionHW6 | Ting-Wei Lan | 2016-01-21 | 1 | -4/+8 |
| | |||||
* | Allow using expressions as arguments of write function | Ting-Wei Lan | 2016-01-21 | 1 | -2/+2 |
| | |||||
* | Add missing _caller_save() and _save_arguments() | kugwa | 2016-01-21 | 1 | -0/+3 |
| | |||||
* | Don't replace main with _start_MAIN | Ting-Wei Lan | 2016-01-21 | 1 | -1/+1 |
| | | | | TA always uses MAIN. | ||||
* | Don't call ccmmc_register_alloc() after saving registers for function calls | Ting-Wei Lan | 2016-01-21 | 1 | -18/+18 |
| | |||||
* | Reverse the order of arguments on the stack | Ting-Wei Lan | 2016-01-21 | 1 | -3/+8 |
| | |||||
* | Fix stack restoration after function calls | Ting-Wei Lan | 2016-01-21 | 1 | -1/+1 |
| | |||||
* | sxtw x__, w__ | kugwa | 2016-01-21 | 1 | -1/+1 |
| | | | | | Additional changes: delete white spaces in a blank line | ||||
* | Save arguments before calling any function | Ting-Wei Lan | 2016-01-20 | 1 | -16/+20 |
| | | | | | We should not skip the argument-saving step for functions without arguments of the special write function. | ||||
* | Support calling functions with arguments | Ting-Wei Lan | 2016-01-20 | 1 | -29/+217 |
| | | | | | | | | | | | 1. The symbol attribute is modified to allow storing a related register instead of a memory location. 2. Call check_relop_expr() on all scalar function arguments to make sure that type information is available when generating code. 3. calc_array_offset() is modified to accept incomplete arrays, which is used when passing parts of arrays as arguments. 4. It is currently possible to crash the code generator by calling a function with more than 3 arguments. | ||||
* | Fix the problem of initializing local variables | kugwa | 2016-01-19 | 1 | -11/+16 |
| | |||||
* | Complete code-gen of for statement | kugwa | 2016-01-18 | 1 | -2/+51 |
| | |||||
* | Complete global array reference | kugwa | 2016-01-18 | 1 | -2/+52 |
| | |||||
* | Change mul 4 to lsl 2 | kugwa | 2016-01-18 | 1 | -11/+4 |
| | |||||
* | Fix calc_array_offset() | kugwa | 2016-01-18 | 1 | -14/+18 |
| | | | | Don't use type->array_size[0] | ||||
* | Callers have to pass extend_name[]HW5 | kugwa | 2016-01-03 | 1 | -4/+6 |
| | |||||
* | sxt -> sxtw | kugwa | 2016-01-03 | 1 | -17/+23 |
| | |||||
* | Add a function to get the name of 64 bit registers | kugwa | 2016-01-03 | 1 | -2/+14 |
| | |||||
* | Add missing ccmmc_register_lock() in store_variable() | kugwa | 2016-01-03 | 1 | -0/+2 |
| | |||||
* | Complete array reference for storing local variables | kugwa | 2016-01-03 | 1 | -18/+41 |
| | |||||
* | Complete array reference for loading local variables | kugwa | 2016-01-03 | 1 | -21/+110 |
| | |||||
* | Use adrp and add to address global variables | Ting-Wei Lan | 2016-01-03 | 1 | -4/+6 |
| | | | | This allows using large global arrays. | ||||
* | Fix linking error caused by missing .align directive | Ting-Wei Lan | 2016-01-03 | 1 | -0/+1 |
| | | | | relocation truncated to fit: R_AARCH64_LD_PREL_LO19 against `.rodata' | ||||
* | Add missing colons after label names | Ting-Wei Lan | 2016-01-03 | 1 | -5/+5 |
| | |||||
* | Don't add a newline when writing a string | Ting-Wei Lan | 2016-01-03 | 1 | -1/+1 |
| | |||||
* | fmov -> mov, fmov cannot be used to move integer registers | Ting-Wei Lan | 2016-01-03 | 1 | -1/+1 |
| | |||||
* | Fix syntax error when accessing global variables | Ting-Wei Lan | 2016-01-03 | 1 | -2/+4 |
| | |||||
* | Drop trailing whitespaces | Ting-Wei Lan | 2016-01-03 | 1 | -2/+2 |
| | |||||
* | Apply register management | kugwa | 2016-01-03 | 1 | -127/+184 |
| | |||||
* | Rewrite names for read, fread, and the overloaded write function | Ting-Wei Lan | 2016-01-03 | 1 | -1/+34 |
| | |||||
* | Temporarily workaround the wrong return label | Ting-Wei Lan | 2016-01-03 | 1 | -0/+10 |
| | |||||
* | Rewrite the name of main function to work with TA's broken toolchain | Ting-Wei Lan | 2016-01-03 | 1 | -6/+12 |
| | |||||
* | Add a function to handle function calls to reduce duplicate code | Ting-Wei Lan | 2016-01-03 | 1 | -6/+9 |
| | |||||
* | Complete code-gen of if-else statement | kugwa | 2016-01-03 | 1 | -3/+56 |
| | |||||
* | Workaround large immediate by loading constant offsets from memory | Ting-Wei Lan | 2016-01-02 | 1 | -4/+12 |
| | |||||
* | Free registers after generating condition code in while statement | kugwa | 2016-01-02 | 1 | -0/+6 |
| | |||||
* | Generate code for return statements | Ting-Wei Lan | 2016-01-02 | 1 | -16/+38 |
| | |||||
* | Floating-point return value is in s0 | Ting-Wei Lan | 2016-01-02 | 1 | -2/+9 |
| | |||||
* | Complete code-gen of while statement | kugwa | 2016-01-02 | 1 | -2/+34 |
| | |||||
* | Remove the assert() in the function call case of generating expr | kugwa | 2016-01-02 | 1 | -1/+1 |
| | |||||
* | Handle function calls in expr | kugwa | 2016-01-02 | 1 | -1/+4 |
| | |||||
* | Generate code for function calls | kugwa | 2016-01-02 | 1 | -0/+3 |
| | |||||
* | fneg instruction should use floating-point registers | Ting-Wei Lan | 2016-01-02 | 1 | -1/+1 |
| | |||||
* | div -> sdiv, there is no instruction called div | Ting-Wei Lan | 2016-01-02 | 1 | -1/+1 |
| | |||||
* | Generate code to initialize variables with constants | Ting-Wei Lan | 2016-01-02 | 1 | -35/+44 |
| | | | | | This implementation only works with single constant. Using expressions as initializers can corrupt values stored on the stack. | ||||
* | No code has to be generated for typedef | Ting-Wei Lan | 2016-01-02 | 1 | -1/+2 |
| | |||||
* | Generate code for expressions and assignments | Ting-Wei Lan | 2016-01-02 | 1 | -2/+385 |
| | |||||
* | Add function prologue and epilogue | Ting-Wei Lan | 2016-01-02 | 1 | -2/+8 |
| | |||||
* | Use x30 as the frame pointer | Ting-Wei Lan | 2016-01-02 | 1 | -0/+1 |
| | |||||
* | Add a simple function to check whether an immediate is too large | Ting-Wei Lan | 2016-01-02 | 1 | -8/+12 |
| | |||||
* | Add .size and .type to all global symbols except for uninitialized variables | Ting-Wei Lan | 2016-01-02 | 1 | -6/+20 |
| | |||||
* | Can allocate many tmps | kugwa | 2016-01-02 | 1 | -5/+5 |
| | |||||
* | Immediate is only safe to when the number is <= 4096 | Ting-Wei Lan | 2015-12-31 | 1 | -2/+2 |
| | |||||
* | Process local variables declared in else blocks | Ting-Wei Lan | 2015-12-31 | 1 | -0/+4 |
| | |||||
* | Properly deallocate the register pool | Ting-Wei Lan | 2015-12-31 | 1 | -0/+2 |
| | |||||
* | Export functions and global variables as global symbols | Ting-Wei Lan | 2015-12-31 | 1 | -4/+9 |
| | |||||
* | Use ldr to prevent immediate from becoming too large | Ting-Wei Lan | 2015-12-31 | 1 | -3/+28 |
| | |||||
* | Initialize the register pool | kugwa | 2015-12-31 | 1 | -0/+1 |
| | | | | | additional changes: TODO: ccmmc_register_fini() | ||||
* | Add code for register management | kugwa | 2015-12-31 | 1 | -0/+1 |
| | |||||
* | Statements should not change the fp offset | Ting-Wei Lan | 2015-12-31 | 1 | -13/+11 |
| | |||||
* | Generate fp offsets for local variables | Ting-Wei Lan | 2015-12-31 | 1 | -1/+99 |
| | |||||
* | Generate code for global variable declarations | Ting-Wei Lan | 2015-12-31 | 1 | -6/+45 |
| | |||||
* | Reset the state of the symbol table before generating code | Ting-Wei Lan | 2015-12-31 | 1 | -0/+2 |
| | |||||
* | Add the missing vim modeline in code-generation.c | Ting-Wei Lan | 2015-12-31 | 1 | -0/+2 |
| | |||||
* | Complete the NORMAL_ID case in generate_global_variable() | kugwa | 2015-12-30 | 1 | -1/+19 |
| | |||||
* | Add 3 static code-generation functions | kugwa | 2015-12-30 | 1 | -0/+28 |
| | |||||
* | Drop any_error from state and add asm_output to state | Ting-Wei Lan | 2015-12-30 | 1 | -1/+1 |
| | |||||
* | Add the code-generation phase | kugwa | 2015-12-30 | 1 | -0/+13 |