deep

a Cross Development Platform for Java

User Tools

Site Tools


dev:crosscompiler:backend_arm:code_generator

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
dev:crosscompiler:backend_arm:code_generator [2019/07/27 16:32] – [Code Generator for ARM] ursgrafdev:crosscompiler:backend_arm:code_generator [2019/10/01 12:15] – [Stackframe] ursgraf
Line 1: Line 1:
 ====== Code Generator for ARM ====== ====== Code Generator for ARM ======
-Everything which is not fully implemented is listed below 
-^topic^remarks^ 
-|throw| do together with exceptions | 
-|new| tests for three dimensional arrays fail| 
-|exceptions| | 
-|US.HALT|what to do here?| 
- 
 All results of all SSA instructions have an assigned register. Now, each SSA instruction can be translated into one or a sequence of machine instructions. In order to do this, we must define the stackframe, which is used when calling a method. All results of all SSA instructions have an assigned register. Now, each SSA instruction can be translated into one or a sequence of machine instructions. In order to do this, we must define the stackframe, which is used when calling a method.
  
Line 14: Line 7:
  
 Explanation: Explanation:
-LR is saved onto the stack together with the necessary nonvolatile GPRs. Even if method is a leaf method LR must be saved onto the stack because LR serves as a scratch register within a method. Considering the GPR's and EXTRs, all nonvolatile register, which are used within this method, must be saved on the stack. Nonvolatiles in EXTR registers occupy either 8 bytes (EXTRD) or bytes (EXTRS). \\+LR is saved onto the stack together with the necessary nonvolatile GPRs. Even if method is a leaf method LR must be saved onto the stack because LR serves as a scratch register within a method. Considering the GPR's and EXTRs, all nonvolatile register, which are used within this method, must be saved on the stack. Nonvolatiles in EXTR registers occupy either 8 bytes (EXTRD) or bytes (EXTRS). \\
 Important: volatile EXTR's must be saved as well if ''US.ENABLE_FLOATS()'' is called in this method (see [[.:exceptions|Exceptions]]). Important: volatile EXTR's must be saved as well if ''US.ENABLE_FLOATS()'' is called in this method (see [[.:exceptions|Exceptions]]).
  
dev/crosscompiler/backend_arm/code_generator.txt · Last modified: 2022/12/20 11:34 by ursgraf