refactor: single definition for common registers

This commit is contained in:
2025-02-28 14:47:47 +00:00
parent d0a71c1888
commit c3f2ce8b19
3 changed files with 17 additions and 18 deletions

View File

@@ -19,17 +19,9 @@ sealed trait RuntimeError {
} }
object RuntimeError { object RuntimeError {
// TODO: Refactor to mitigate imports and redeclared vals perhaps
import wacc.asmGenerator.stackAlign import wacc.asmGenerator.stackAlign
import assemblyIR.Size._ import assemblyIR.commonRegisters._
import assemblyIR.RegName._
private val RDI = Register(Q64, DI)
private val RIP = Register(Q64, IP)
private val RSI = Register(Q64, SI)
private val RCX = Register(Q64, CX)
private val ERROR_CODE = 255 private val ERROR_CODE = 255
case object ZeroDivError extends RuntimeError { case object ZeroDivError extends RuntimeError {

View File

@@ -8,21 +8,13 @@ import wacc.RuntimeError._
object asmGenerator { object asmGenerator {
import microWacc._ import microWacc._
import assemblyIR._ import assemblyIR._
import assemblyIR.commonRegisters._
import assemblyIR.Size._ import assemblyIR.Size._
import assemblyIR.RegName._ import assemblyIR.RegName._
import types._ import types._
import sizeExtensions._ import sizeExtensions._
import lexer.escapedChars import lexer.escapedChars
private val RAX = Register(Q64, AX)
private val EAX = Register(D32, AX)
private val RDI = Register(Q64, DI)
private val RIP = Register(Q64, IP)
private val RBP = Register(Q64, BP)
private val RSI = Register(Q64, SI)
private val RDX = Register(Q64, DX)
private val RCX = Register(Q64, CX)
private val ECX = Register(D32, CX)
private val argRegs = List(DI, SI, DX, CX, R8, R9) private val argRegs = List(DI, SI, DX, CX, R8, R9)
private val _7_BIT_MASK = 0x7f private val _7_BIT_MASK = 0x7f

View File

@@ -213,4 +213,19 @@ object assemblyIR {
case String => "%s" case String => "%s"
} }
} }
object commonRegisters {
import Size._
import RegName._
val RAX = Register(Q64, AX)
val EAX = Register(D32, AX)
val RDI = Register(Q64, DI)
val RIP = Register(Q64, IP)
val RBP = Register(Q64, BP)
val RSI = Register(Q64, SI)
val RDX = Register(Q64, DX)
val RCX = Register(Q64, CX)
val ECX = Register(D32, CX)
}
} }