From 07fde7f6cc7cf9bc097fa06255b18e4e1ea2865b Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Tue, 28 Mar 2023 19:50:03 +0200 Subject: [PATCH] fix IR same register error --- .../src/prog8/codegen/intermediate/BuiltinFuncGen.kt | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/codeGenIntermediate/src/prog8/codegen/intermediate/BuiltinFuncGen.kt b/codeGenIntermediate/src/prog8/codegen/intermediate/BuiltinFuncGen.kt index 898ecc834..4aa5855ab 100644 --- a/codeGenIntermediate/src/prog8/codegen/intermediate/BuiltinFuncGen.kt +++ b/codeGenIntermediate/src/prog8/codegen/intermediate/BuiltinFuncGen.kt @@ -47,19 +47,15 @@ internal class BuiltinFuncGen(private val codeGen: IRCodeGen, private val exprGe } private fun funcStringCompare(call: PtBuiltinFunctionCall): ExpressionCodeResult { -/* - loadm.w r65500,string.compare.st1 - loadm.w r65501,string.compare.st2 - syscall 29 - returnreg.b r0 - */ val result = mutableListOf() val left = exprGen.translateExpression(call.args[0]) val right = exprGen.translateExpression(call.args[1]) + val targetReg = codeGen.registers.nextFree() addToResult(result, left, 65500, -1) addToResult(result, right, 65501, -1) addInstr(result, IRInstruction(Opcode.SYSCALL, value=IMSyscall.COMPARE_STRINGS.number), null) - return ExpressionCodeResult(result, IRDataType.BYTE, 0, -1) + addInstr(result, IRInstruction(Opcode.LOADR, IRDataType.BYTE, reg1=targetReg, reg2=0), null) + return ExpressionCodeResult(result, IRDataType.BYTE, targetReg, -1) } private fun funcCmp(call: PtBuiltinFunctionCall): ExpressionCodeResult {