refactor: return args and defs from labelGenerator, instead of strings
This commit is contained in:
@@ -7,13 +7,13 @@ sealed trait RuntimeError {
|
||||
val name: String
|
||||
protected val errStr: String
|
||||
|
||||
protected def getErrLabel(using labelGenerator: LabelGenerator): String =
|
||||
labelGenerator.getLabel(errStr, name = name)
|
||||
protected def getErrLabel(using labelGenerator: LabelGenerator): LabelArg =
|
||||
labelGenerator.getLabelArg(errStr, name = name)
|
||||
|
||||
protected def generateHandler(using labelGenerator: LabelGenerator): Chain[AsmLine]
|
||||
|
||||
def generate(using labelGenerator: LabelGenerator): Chain[AsmLine] =
|
||||
LabelDef(labelGenerator.getLabel(this)) +: generateHandler
|
||||
labelGenerator.getLabelDef(this) +: generateHandler
|
||||
}
|
||||
|
||||
object RuntimeError {
|
||||
@@ -39,7 +39,7 @@ object RuntimeError {
|
||||
|
||||
protected def generateHandler(using labelGenerator: LabelGenerator): Chain[AsmLine] = Chain(
|
||||
stackAlign,
|
||||
Load(RDI, IndexAddress(RIP, LabelArg(getErrLabel))),
|
||||
Load(RDI, IndexAddress(RIP, getErrLabel)),
|
||||
assemblyIR.Call(CLibFunc.PrintF),
|
||||
Move(RDI, ImmediateVal(-1)),
|
||||
assemblyIR.Call(CLibFunc.Exit)
|
||||
@@ -54,7 +54,7 @@ object RuntimeError {
|
||||
protected def generateHandler(using labelGenerator: LabelGenerator): Chain[AsmLine] = Chain(
|
||||
Pop(RSI),
|
||||
stackAlign,
|
||||
Load(RDI, IndexAddress(RIP, LabelArg(getErrLabel))),
|
||||
Load(RDI, IndexAddress(RIP, getErrLabel)),
|
||||
assemblyIR.Call(CLibFunc.PrintF),
|
||||
Move(RDI, ImmediateVal(255)),
|
||||
assemblyIR.Call(CLibFunc.Exit)
|
||||
@@ -68,7 +68,7 @@ object RuntimeError {
|
||||
|
||||
protected def generateHandler(using labelGenerator: LabelGenerator): Chain[AsmLine] = Chain(
|
||||
stackAlign,
|
||||
Load(RDI, IndexAddress(RIP, LabelArg(getErrLabel))),
|
||||
Load(RDI, IndexAddress(RIP, getErrLabel)),
|
||||
assemblyIR.Call(CLibFunc.PrintF),
|
||||
Move(RDI, ImmediateVal(255)),
|
||||
assemblyIR.Call(CLibFunc.Exit)
|
||||
@@ -82,7 +82,7 @@ object RuntimeError {
|
||||
|
||||
protected def generateHandler(using labelGenerator: LabelGenerator): Chain[AsmLine] = Chain(
|
||||
stackAlign,
|
||||
Load(RDI, IndexAddress(RIP, LabelArg(getErrLabel))),
|
||||
Load(RDI, IndexAddress(RIP, getErrLabel)),
|
||||
assemblyIR.Call(CLibFunc.PrintF),
|
||||
Move(RDI, ImmediateVal(255)),
|
||||
assemblyIR.Call(CLibFunc.Exit)
|
||||
@@ -97,7 +97,7 @@ object RuntimeError {
|
||||
protected def generateHandler(using labelGenerator: LabelGenerator): Chain[AsmLine] = Chain(
|
||||
Move(RSI, Register(Q64, CX)),
|
||||
stackAlign,
|
||||
Load(RDI, IndexAddress(RIP, LabelArg(getErrLabel))),
|
||||
Load(RDI, IndexAddress(RIP, getErrLabel)),
|
||||
assemblyIR.Call(CLibFunc.PrintF),
|
||||
Move(RDI, ImmediateVal(255)),
|
||||
assemblyIR.Call(CLibFunc.Exit)
|
||||
|
||||
Reference in New Issue
Block a user