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 revision Previous revision
dev:crosscompiler:backend_arm:code_generator [2019/10/01 12:18]
ursgraf [Stackframe]
dev:crosscompiler:backend_arm:code_generator [2019/10/01 12:21] (current)
ursgraf [Stackframe]
Line 12: Line 12:
 The field //local variables// is only used if the number of registers does not suffice and locals must be assigned a slot on the stack. Variables of type //long// or //double// occupy two slots. \\ The field //local variables// is only used if the number of registers does not suffice and locals must be assigned a slot on the stack. Variables of type //long// or //double// occupy two slots. \\
 When calling interface methods some temporary space on the stack might be necessary (see below). \\  When calling interface methods some temporary space on the stack might be necessary (see below). \\ 
-The field //​parameter//​ serves to hold parameters for method calls, which can not be placed directly into registers. The size of the field //​parameters//​ is determined by considering all the calls to other methods within this method and taking the maximum size of their parameters. //​parameters//​ must be at the top of the stack! This garantees that in all called methods these parameters can be accessed with the same offset. \\ +The field //​parameter//​ serves to hold parameters for method calls, which can not be placed directly into registers. The size of the field //​parameters//​ is determined by considering all the calls to other methods within this method and taking the maximum size of their parameters. //​parameters//​ must be at the top of the stack! This garantees that in all called methods these parameters can be accessed with the same offset. Each parameter on the stack occupies 8 bytes (EXTRS or EXTRD).\\ 
 The stack pointer always points to the top of the actual frame. At the top the stack pointer of the caller has to be stored. The back chain pointer is used for the debugger, for exceptions and for the garbage collection. The stack pointer always points to the top of the actual frame. At the top the stack pointer of the caller has to be stored. The back chain pointer is used for the debugger, for exceptions and for the garbage collection.
 \\ \\
dev/crosscompiler/backend_arm/code_generator.txt · Last modified: 2019/10/01 12:21 by ursgraf