This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | Last revisionBoth sides next revision | ||
dev:crosscompiler:backend:register_allocator [2018/10/31 12:19] – [Locals on the Stack] ursgraf | dev:crosscompiler:backend:register_allocator [2018/10/31 12:58] – [Locals on the Stack] ursgraf | ||
---|---|---|---|
Line 94: | Line 94: | ||
===== Locals on the Stack ===== | ===== Locals on the Stack ===== | ||
- | Local variables which cannot be assigned a register get assigned a stack slot. Stack slots are numbered from 0x100. The code generator will handle these stack slots. | + | Local variables which cannot be assigned a register get assigned a stack slot. Stack slots are numbered from 0x100. The code generator will handle |
+ | * load stack slot into free register | ||
+ | * execute instruction | ||
+ | |||
+ | If the result of the SSA instruction is assigned a stack slot, the code generator will have to save to the stack: | ||
+ | |||
+ | * execute instruction, | ||
+ | * store destination register onto stack | ||
+ | |||
+ | During register allocation of a method a variable // | ||