diff --git a/oscar64/InterCode.cpp b/oscar64/InterCode.cpp index de428d2..c77aa64 100644 --- a/oscar64/InterCode.cpp +++ b/oscar64/InterCode.cpp @@ -1400,7 +1400,7 @@ void InterInstruction::Disassemble(FILE* file) fprintf(file, "MOVE"); break; case IC_BINARY_OPERATOR: - fprintf(file, "BINOP"); + fprintf(file, "BINOP%d", mOperator); break; case IC_UNARY_OPERATOR: fprintf(file, "UNOP"); diff --git a/oscar64/NativeCodeGenerator.cpp b/oscar64/NativeCodeGenerator.cpp index eca6d57..8f2d7ba 100644 --- a/oscar64/NativeCodeGenerator.cpp +++ b/oscar64/NativeCodeGenerator.cpp @@ -2384,6 +2384,8 @@ void NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterI if (ins.mTType == IT_FLOAT) { + int sreg0 = ins.mSTemp[0] < 0 ? -1 : BC_REG_TMP + proc->mTempOffset[ins.mSTemp[0]]; + if (ins.mSTemp[1] < 0) { union { float f; unsigned int v; } cc; @@ -2406,6 +2408,8 @@ void NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterI { // cull previous store from accu to temp using direcrt forwarding mIns.SetSize(mIns.Size() - 8); + if (sreg0 == BC_REG_TMP + proc->mTempOffset[ins.mSTemp[1]]) + sreg0 = BC_REG_ACCU; } else { @@ -2439,13 +2443,13 @@ void NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterI } else { - mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins.mSTemp[0]] + 0)); + mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, sreg0 + 0)); mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 0)); - mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins.mSTemp[0]] + 1)); + mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, sreg0 + 1)); mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 1)); - mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins.mSTemp[0]] + 2)); + mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, sreg0 + 2)); mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 2)); - mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins.mSTemp[0]] + 3)); + mIns.Push(NativeCodeInstruction(ASMIT_LDA, ASMIM_ZERO_PAGE, sreg0 + 3)); mIns.Push(NativeCodeInstruction(ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 3)); } diff --git a/oscar64/oscar64.rc b/oscar64/oscar64.rc index fec06e7..f3cab6b 100644 --- a/oscar64/oscar64.rc +++ b/oscar64/oscar64.rc @@ -25,8 +25,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,24,0 - PRODUCTVERSION 1,0,24,0 + FILEVERSION 1,0,26,0 + PRODUCTVERSION 1,0,26,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -43,12 +43,12 @@ BEGIN BEGIN VALUE "CompanyName", "oscar64" VALUE "FileDescription", "oscar64 compiler" - VALUE "FileVersion", "1.0.24.0" + VALUE "FileVersion", "1.0.26.0" VALUE "InternalName", "oscar64.exe" VALUE "LegalCopyright", "Copyright (C) 2021" VALUE "OriginalFilename", "oscar64.exe" VALUE "ProductName", "oscar64" - VALUE "ProductVersion", "1.0.24.0" + VALUE "ProductVersion", "1.0.26.0" END END BLOCK "VarFileInfo" diff --git a/oscar64setup/oscar64setup.vdproj b/oscar64setup/oscar64setup.vdproj index ce300b0..4d410f6 100644 --- a/oscar64setup/oscar64setup.vdproj +++ b/oscar64setup/oscar64setup.vdproj @@ -504,15 +504,15 @@ { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:oscar64" - "ProductCode" = "8:{B20D936B-B9E1-4135-B9AA-8C367043CF71}" - "PackageCode" = "8:{63E1E188-3AB3-4767-B84A-CDB7F9FC9E10}" + "ProductCode" = "8:{4A0B4AAF-D32D-43EC-BA23-231C367E8BDC}" + "PackageCode" = "8:{D2AC90E7-B1B4-48F0-920C-74C28DC03786}" "UpgradeCode" = "8:{9AB61EFF-ACAC-4079-9950-8D96615CD4EF}" "AspNetVersion" = "8:2.0.50727.0" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:FALSE" - "ProductVersion" = "8:1.0.24" + "ProductVersion" = "8:1.0.26" "Manufacturer" = "8:oscar64" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:" @@ -1026,7 +1026,7 @@ { "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_FB2E467BC172457785F4279BB0BFE8B6" { - "SourcePath" = "8:..\\Release\\oscar64.exe" + "SourcePath" = "8:..\\Debug\\oscar64.exe" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_C95D3F098F884652A04D707B55B980EE"