Files
2025-02-Compiler/notes/7.md
2025-11-05 11:14:03 +09:00

650 B

Code Generation 2

Stack Machine

Consider two instructions

  • push i
  • add i

It is not efficient because all stack is considered as memory (which is slower than register).

Utilizing Register Files

Keep the top of the stack in a register, so add requires only a single memory access.

  • acc <- i
  • push acc
  • pop
  • add

Code Generation From Stack Machine

Assume that stack grows towards lower addresses.

MIPS

32 regs

$sp, $a0, $t1

  • lw
  • add
  • sw
  • addi
  • li
  • mv

Converting Stack to MIPS ISA

  • acc <- i
    • li $a0 i

Optimizing

Branch

beq $1 $2 lbl b lbl

Function