diff --git a/oscar64/ByteCodeGenerator.cpp b/oscar64/ByteCodeGenerator.cpp index 5866ca7..94181cc 100644 --- a/oscar64/ByteCodeGenerator.cpp +++ b/oscar64/ByteCodeGenerator.cpp @@ -1344,7 +1344,7 @@ void ByteCodeBasicBlock::LongConstToWork(int64 val) void ByteCodeBasicBlock::FloatConstToAccu(double val) { union { float f; int v; } cc; - cc.f = val; + cc.f = float(val); ByteCodeInstruction bins(BC_CONST_32); bins.mRegister = BC_REG_ACCU; bins.mValue = cc.v; @@ -1354,7 +1354,7 @@ void ByteCodeBasicBlock::FloatConstToAccu(double val) void ByteCodeBasicBlock::FloatConstToWork(double val) { union { float f; int v; } cc; - cc.f = val; + cc.f = float(val); ByteCodeInstruction bins(BC_CONST_32); bins.mRegister = BC_REG_WORK; bins.mValue = cc.v; @@ -1379,7 +1379,7 @@ void ByteCodeBasicBlock::LoadOperandAddress(InterCodeProcedure* proc, const Inte ByteCodeInstruction bins(BC_LEA_ABS); bins.mRegister = reg; bins.mLinkerObject = op.mLinkerObject; - bins.mValue = op.mIntConst; + bins.mValue = int(op.mIntConst); bins.mRelocate = true; mIns.Push(bins); } @@ -1387,35 +1387,35 @@ void ByteCodeBasicBlock::LoadOperandAddress(InterCodeProcedure* proc, const Inte { ByteCodeInstruction bins(BC_LEA_ABS); bins.mRegister = reg; - bins.mValue = op.mIntConst; + bins.mValue = int(op.mIntConst); mIns.Push(bins); } else if (op.mMemory == IM_LOCAL) { ByteCodeInstruction bins(BC_LEA_LOCAL); bins.mRegister = reg; - bins.mValue = op.mIntConst + proc->mLocalVars[op.mVarIndex]->mOffset; + bins.mValue = int(op.mIntConst + proc->mLocalVars[op.mVarIndex]->mOffset); mIns.Push(bins); } else if (op.mMemory == IM_PARAM) { ByteCodeInstruction bins(BC_LEA_LOCAL); bins.mRegister = reg; - bins.mValue = op.mIntConst + op.mVarIndex + proc->mLocalSize + 2; + bins.mValue = int(op.mIntConst + op.mVarIndex + proc->mLocalSize + 2); mIns.Push(bins); } else if (op.mMemory == IM_FPARAM || op.mMemory == IM_FFRAME) { ByteCodeInstruction bins(BC_LEA_ABS); bins.mRegister = reg; - bins.mValue = BC_REG_FPARAMS + op.mIntConst + op.mVarIndex; + bins.mValue = int(BC_REG_FPARAMS + op.mIntConst + op.mVarIndex); mIns.Push(bins); } else if (op.mMemory == IM_FRAME) { ByteCodeInstruction bins(BC_LEA_FRAME); bins.mRegister = reg; - bins.mValue = op.mVarIndex + op.mIntConst + 2; + bins.mValue = int(op.mVarIndex + op.mIntConst + 2); mIns.Push(bins); } else if (op.mMemory == IM_PROCEDURE) @@ -1442,7 +1442,7 @@ void ByteCodeBasicBlock::LoadOperandAddress(InterCodeProcedure* proc, const Inte ByteCodeInstruction lins(BC_LEA_ABS_INDEX); lins.mRegister = BC_REG_TMP + proc->mTempOffset[op.mTemp]; lins.mRegisterFinal = op.mFinal; - lins.mValue = op.mIntConst; + lins.mValue = int(op.mIntConst); mIns.Push(lins); } } @@ -1456,7 +1456,7 @@ void ByteCodeBasicBlock::LoadOperandAddress(InterCodeProcedure* proc, const Inte { ByteCodeInstruction iins(BC_BINOP_ADDI_16); iins.mRegister = BC_REG_ACCU; - iins.mValue = op.mIntConst; + iins.mValue = int(op.mIntConst); mIns.Push(iins); } @@ -1468,7 +1468,7 @@ void ByteCodeBasicBlock::LoadConstant(InterCodeProcedure* proc, const InterInstr if (ins->mDst.mType == IT_FLOAT) { union { float f; int v; } cc; - cc.f = ins->mConst.mFloatConst; + cc.f = float(ins->mConst.mFloatConst); ByteCodeInstruction bins(BC_CONST_32); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; bins.mValue = cc.v; @@ -1481,7 +1481,7 @@ void ByteCodeBasicBlock::LoadConstant(InterCodeProcedure* proc, const InterInstr ByteCodeInstruction bins(BC_LEA_ABS); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; bins.mLinkerObject = ins->mConst.mLinkerObject; - bins.mValue = ins->mConst.mIntConst; + bins.mValue = int(ins->mConst.mIntConst); bins.mRelocate = true; mIns.Push(bins); } @@ -1489,35 +1489,35 @@ void ByteCodeBasicBlock::LoadConstant(InterCodeProcedure* proc, const InterInstr { ByteCodeInstruction bins(BC_LEA_ABS); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - bins.mValue = ins->mConst.mIntConst; + bins.mValue = int(ins->mConst.mIntConst); mIns.Push(bins); } else if (ins->mConst.mMemory == IM_LOCAL) { ByteCodeInstruction bins(BC_LEA_LOCAL); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - bins.mValue = ins->mConst.mIntConst + proc->mLocalVars[ins->mConst.mVarIndex]->mOffset; + bins.mValue = int(ins->mConst.mIntConst + proc->mLocalVars[ins->mConst.mVarIndex]->mOffset); mIns.Push(bins); } else if (ins->mConst.mMemory == IM_PARAM) { ByteCodeInstruction bins(BC_LEA_LOCAL); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - bins.mValue = ins->mConst.mIntConst + ins->mConst.mVarIndex + proc->mLocalSize + 2; + bins.mValue = int(ins->mConst.mIntConst + ins->mConst.mVarIndex + proc->mLocalSize + 2); mIns.Push(bins); } else if (ins->mConst.mMemory == IM_FPARAM || ins->mConst.mMemory == IM_FFRAME) { ByteCodeInstruction bins(BC_LEA_ABS); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - bins.mValue = BC_REG_FPARAMS + ins->mConst.mIntConst + ins->mConst.mVarIndex; + bins.mValue = int(BC_REG_FPARAMS + ins->mConst.mIntConst + ins->mConst.mVarIndex); mIns.Push(bins); } else if (ins->mConst.mMemory == IM_FRAME) { ByteCodeInstruction bins(BC_LEA_FRAME); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - bins.mValue = ins->mConst.mVarIndex + ins->mSrc[1].mIntConst + 2; + bins.mValue = int(ins->mConst.mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(bins); } else if (ins->mConst.mMemory == IM_PROCEDURE) @@ -1534,21 +1534,21 @@ void ByteCodeBasicBlock::LoadConstant(InterCodeProcedure* proc, const InterInstr { ByteCodeInstruction bins(BC_CONST_8); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - bins.mValue = ins->mConst.mIntConst; + bins.mValue = int(ins->mConst.mIntConst); mIns.Push(bins); } else if (ins->mDst.mType == IT_INT32) { ByteCodeInstruction bins(BC_CONST_32); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - bins.mValue = ins->mConst.mIntConst; + bins.mValue = int(ins->mConst.mIntConst); mIns.Push(bins); } else { ByteCodeInstruction bins(BC_CONST_16); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - bins.mValue = ins->mConst.mIntConst; + bins.mValue = int(ins->mConst.mIntConst); mIns.Push(bins); } @@ -1593,26 +1593,26 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_ABS_32); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[1].mLinkerObject; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_ACCU; mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_STORE_ABS_32); - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_ACCU; mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_FPARAM || ins->mSrc[1].mMemory == IM_FFRAME) { ByteCodeInstruction bins(BC_STORE_REG_32); - bins.mRegister = BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst; + bins.mRegister = int(BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst); mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; else @@ -1644,7 +1644,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_FRAME_32); bins.mRegister = BC_REG_ACCU; bins.mRegisterFinal = ins->mSrc[0].mFinal; - bins.mValue = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + bins.mValue = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(bins); } } @@ -1655,14 +1655,14 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_ABS_32); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[1].mLinkerObject; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_STORE_ABS_32); - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; mIns.Push(bins); } @@ -1673,12 +1673,12 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI mIns.Push(ains); ByteCodeInstruction bins(BC_STORE_REG_32); - bins.mRegister = BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst; + bins.mRegister = int(BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst); mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; else @@ -1710,7 +1710,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_FRAME_32); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; bins.mRegisterFinal = ins->mSrc[0].mFinal; - bins.mValue = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + bins.mValue = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(bins); } } @@ -1723,7 +1723,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI if (ins->mSrc[1].mMemory == IM_INDIRECT) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (index >= 0 && index + 4 <= 256) { ByteCodeInstruction lins(BC_ADDR_REG); @@ -1751,7 +1751,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI { if (ins->mSrc[1].mMemory == IM_INDIRECT) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (index >= 0 && index + 4 <= 256) { ByteCodeInstruction lins(BC_ADDR_REG); @@ -1791,26 +1791,26 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_ABS_16); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[1].mLinkerObject; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_ACCU; mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_STORE_ABS_16); - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_ACCU; mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_FPARAM || ins->mSrc[1].mMemory == IM_FFRAME) { ByteCodeInstruction bins(BC_STORE_REG_16); - bins.mRegister = BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst; + bins.mRegister = int(BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst); mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; else @@ -1839,7 +1839,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI { ByteCodeInstruction bins(BC_STORE_FRAME_16); bins.mRegister = BC_REG_ACCU; - bins.mValue = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + bins.mValue = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(bins); } } @@ -1850,14 +1850,14 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_ABS_16); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[1].mLinkerObject; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_STORE_ABS_16); - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; bins.mRegisterFinal = ins->mSrc[0].mFinal; mIns.Push(bins); @@ -1870,12 +1870,12 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI mIns.Push(ains); ByteCodeInstruction bins(BC_STORE_REG_16); - bins.mRegister = BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst; + bins.mRegister = int(BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst); mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; else @@ -1907,7 +1907,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_FRAME_16); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; bins.mRegisterFinal = ins->mSrc[0].mFinal; - bins.mValue = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + bins.mValue = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(bins); } } @@ -1920,7 +1920,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI if (ins->mSrc[1].mMemory == IM_INDIRECT) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (index >= 0 && index + 2 <= 256) { ByteCodeInstruction lins(BC_ADDR_REG); @@ -1948,7 +1948,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI { if (ins->mSrc[1].mMemory == IM_INDIRECT) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (index >= 0 && index + 2 <= 256) { ByteCodeInstruction lins(BC_ADDR_REG); @@ -1993,26 +1993,26 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_ABS_8); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[1].mLinkerObject; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_ACCU; mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_STORE_ABS_8); - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_ACCU; mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_FPARAM || ins->mSrc[1].mMemory == IM_FFRAME) { ByteCodeInstruction bins(BC_STORE_REG_8); - bins.mRegister = BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst; + bins.mRegister = int(BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst); mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; else @@ -2041,7 +2041,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI { ByteCodeInstruction bins(BC_STORE_FRAME_8); bins.mRegister = BC_REG_ACCU; - bins.mValue = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + bins.mValue = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(bins); } } @@ -2052,26 +2052,26 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_ABS_16); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[1].mLinkerObject; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_ACCU; mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_STORE_ABS_16); - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_ACCU; mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_FPARAM || ins->mSrc[1].mMemory == IM_FFRAME) { ByteCodeInstruction bins(BC_STORE_REG_16); - bins.mRegister = BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst; + bins.mRegister = int(BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst); mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; else @@ -2100,7 +2100,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI { ByteCodeInstruction bins(BC_STORE_FRAME_16); bins.mRegister = BC_REG_ACCU; - bins.mValue = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + bins.mValue = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(bins); } } @@ -2111,26 +2111,26 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_ABS_32); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[1].mLinkerObject; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_ACCU; mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_STORE_ABS_32); - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_ACCU; mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_FPARAM || ins->mSrc[1].mMemory == IM_FFRAME) { ByteCodeInstruction bins(BC_STORE_REG_32); - bins.mRegister = BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst; + bins.mRegister = int(BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst); mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; else @@ -2159,7 +2159,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI { ByteCodeInstruction bins(BC_STORE_FRAME_32); bins.mRegister = BC_REG_ACCU; - bins.mValue = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + bins.mValue = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(bins); } } @@ -2173,7 +2173,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_ABS_8); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[1].mLinkerObject; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; bins.mRegisterFinal = ins->mSrc[0].mFinal; mIns.Push(bins); @@ -2181,7 +2181,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI else if (ins->mSrc[1].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_STORE_ABS_8); - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; bins.mRegisterFinal = ins->mSrc[0].mFinal; mIns.Push(bins); @@ -2194,12 +2194,12 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI mIns.Push(ains); ByteCodeInstruction bins(BC_STORE_REG_8); - bins.mRegister = BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst; + bins.mRegister = int(BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst); mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; else @@ -2231,7 +2231,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_FRAME_8); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; bins.mRegisterFinal = ins->mSrc[0].mFinal; - bins.mValue = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + bins.mValue = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(bins); } } @@ -2242,7 +2242,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_ABS_16); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[1].mLinkerObject; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; bins.mRegisterFinal = ins->mSrc[0].mFinal; mIns.Push(bins); @@ -2250,7 +2250,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI else if (ins->mSrc[1].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_STORE_ABS_16); - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; bins.mRegisterFinal = ins->mSrc[0].mFinal; mIns.Push(bins); @@ -2263,12 +2263,12 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI mIns.Push(ains); ByteCodeInstruction bins(BC_STORE_REG_16); - bins.mRegister = BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst; + bins.mRegister = int(BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst); mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; else @@ -2300,7 +2300,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_FRAME_16); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; bins.mRegisterFinal = ins->mSrc[0].mFinal; - bins.mValue = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + bins.mValue = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(bins); } } @@ -2311,7 +2311,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_ABS_32); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[1].mLinkerObject; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; bins.mRegisterFinal = ins->mSrc[0].mFinal; mIns.Push(bins); @@ -2319,7 +2319,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI else if (ins->mSrc[1].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_STORE_ABS_32); - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; bins.mRegisterFinal = ins->mSrc[0].mFinal; mIns.Push(bins); @@ -2332,12 +2332,12 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI mIns.Push(ains); ByteCodeInstruction bins(BC_STORE_REG_32); - bins.mRegister = BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst; + bins.mRegister = int(BC_REG_FPARAMS + ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst); mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; else @@ -2369,7 +2369,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI ByteCodeInstruction bins(BC_STORE_FRAME_32); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; bins.mRegisterFinal = ins->mSrc[0].mFinal; - bins.mValue = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + bins.mValue = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(bins); } } @@ -2386,7 +2386,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI if (ins->mSrc[1].mMemory == IM_INDIRECT) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (index >= 0 && index + InterTypeSize[ins->mSrc[0].mType] <= 256) { ByteCodeInstruction lins(BC_ADDR_REG); @@ -2431,7 +2431,7 @@ void ByteCodeBasicBlock::StoreDirectValue(InterCodeProcedure* proc, const InterI { if (ins->mSrc[1].mMemory == IM_INDIRECT) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (index >= 0 && index + InterTypeSize[ins->mSrc[0].mType] <= 256) { ByteCodeInstruction lins(BC_ADDR_REG); @@ -2490,21 +2490,21 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn ByteCodeInstruction bins(BC_LOAD_ABS_32); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[0].mLinkerObject; - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; mIns.Push(bins); } else if (ins->mSrc[0].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_LOAD_ABS_32); - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; mIns.Push(bins); } else if (ins->mSrc[0].mMemory == IM_FPARAM || ins->mSrc[0].mMemory == IM_FFRAME) { ByteCodeInstruction ains(BC_LOAD_REG_32); - ains.mRegister = BC_REG_FPARAMS + ins->mSrc[0].mIntConst + ins->mSrc[0].mVarIndex; + ains.mRegister = int(BC_REG_FPARAMS + ins->mSrc[0].mIntConst + ins->mSrc[0].mVarIndex); mIns.Push(ains); ByteCodeInstruction bins(BC_STORE_REG_32); @@ -2513,7 +2513,7 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn } else if (ins->mSrc[0].mMemory == IM_LOCAL || ins->mSrc[0].mMemory == IM_PARAM) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); if (ins->mSrc[0].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[0].mVarIndex]->mOffset; else @@ -2543,7 +2543,7 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn { if (ins->mSrc[0].mMemory == IM_INDIRECT) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); if (index >= 0 && index + 4 <= 256) { ByteCodeInstruction lins(BC_ADDR_REG); @@ -2577,21 +2577,21 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn ByteCodeInstruction bins(BC_LOAD_ABS_16); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[0].mLinkerObject; - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; mIns.Push(bins); } else if (ins->mSrc[0].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_LOAD_ABS_16); - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; mIns.Push(bins); } else if (ins->mSrc[0].mMemory == IM_FPARAM || ins->mSrc[0].mMemory == IM_FFRAME) { ByteCodeInstruction ains(BC_LOAD_REG_16); - ains.mRegister = BC_REG_FPARAMS + ins->mSrc[0].mIntConst + ins->mSrc[0].mVarIndex; + ains.mRegister = int(BC_REG_FPARAMS + ins->mSrc[0].mIntConst + ins->mSrc[0].mVarIndex); mIns.Push(ains); ByteCodeInstruction bins(BC_STORE_REG_16); @@ -2600,7 +2600,7 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn } else if (ins->mSrc[0].mMemory == IM_LOCAL || ins->mSrc[0].mMemory == IM_PARAM) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); if (ins->mSrc[0].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[0].mVarIndex]->mOffset; else @@ -2630,7 +2630,7 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn { if (ins->mSrc[0].mMemory == IM_INDIRECT) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); if (index >= 0 && index + 2 <= 256) { ByteCodeInstruction lins(BC_ADDR_REG); @@ -2666,21 +2666,21 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn ByteCodeInstruction bins(BC_LOAD_ABS_8); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[0].mLinkerObject; - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; mIns.Push(bins); } else if (ins->mSrc[0].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_LOAD_ABS_8); - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; mIns.Push(bins); } else if (ins->mSrc[0].mMemory == IM_FPARAM || ins->mSrc[0].mMemory == IM_FFRAME) { ByteCodeInstruction ains(BC_LOAD_REG_8); - ains.mRegister = BC_REG_FPARAMS + ins->mSrc[0].mIntConst + ins->mSrc[0].mVarIndex; + ains.mRegister = int(BC_REG_FPARAMS + ins->mSrc[0].mIntConst + ins->mSrc[0].mVarIndex); mIns.Push(ains); ByteCodeInstruction bins(BC_STORE_REG_8); @@ -2689,7 +2689,7 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn } else if (ins->mSrc[0].mMemory == IM_LOCAL || ins->mSrc[0].mMemory == IM_PARAM) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); if (ins->mSrc[0].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[0].mVarIndex]->mOffset; else @@ -2722,21 +2722,21 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn ByteCodeInstruction bins(BC_LOAD_ABS_16); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[0].mLinkerObject; - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; mIns.Push(bins); } else if (ins->mSrc[0].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_LOAD_ABS_16); - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; mIns.Push(bins); } else if (ins->mSrc[0].mMemory == IM_FPARAM || ins->mSrc[0].mMemory == IM_FFRAME) { ByteCodeInstruction ains(BC_LOAD_REG_16); - ains.mRegister = BC_REG_FPARAMS + ins->mSrc[0].mIntConst + ins->mSrc[0].mVarIndex; + ains.mRegister = int(BC_REG_FPARAMS + ins->mSrc[0].mIntConst + ins->mSrc[0].mVarIndex); mIns.Push(ains); ByteCodeInstruction bins(BC_STORE_REG_16); @@ -2745,7 +2745,7 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn } else if (ins->mSrc[0].mMemory == IM_LOCAL || ins->mSrc[0].mMemory == IM_PARAM) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); if (ins->mSrc[0].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[0].mVarIndex]->mOffset; else @@ -2778,21 +2778,21 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn ByteCodeInstruction bins(BC_LOAD_ABS_32); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[0].mLinkerObject; - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; mIns.Push(bins); } else if (ins->mSrc[0].mMemory == IM_ABSOLUTE) { ByteCodeInstruction bins(BC_LOAD_ABS_32); - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; mIns.Push(bins); } else if (ins->mSrc[0].mMemory == IM_FPARAM || ins->mSrc[0].mMemory == IM_FFRAME) { ByteCodeInstruction ains(BC_LOAD_REG_32); - ains.mRegister = BC_REG_FPARAMS + ins->mSrc[0].mIntConst + ins->mSrc[0].mVarIndex; + ains.mRegister = int(BC_REG_FPARAMS + ins->mSrc[0].mIntConst + ins->mSrc[0].mVarIndex); mIns.Push(ains); ByteCodeInstruction bins(BC_STORE_REG_32); @@ -2801,7 +2801,7 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn } else if (ins->mSrc[0].mMemory == IM_LOCAL || ins->mSrc[0].mMemory == IM_PARAM) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); if (ins->mSrc[0].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[0].mVarIndex]->mOffset; else @@ -2832,7 +2832,7 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn { if (ins->mSrc[0].mMemory == IM_INDIRECT) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); if (index >= 0 && index + InterTypeSize[ins->mDst.mType] <= 256) { ByteCodeInstruction lins(BC_ADDR_REG); @@ -2878,7 +2878,7 @@ void ByteCodeBasicBlock::LoadDirectValue(InterCodeProcedure* proc, const InterIn void ByteCodeBasicBlock::LoadStoreIndirectValue(InterCodeProcedure* proc, const InterInstruction* rins, const InterInstruction* wins) { - int ri = rins->mSrc[0].mIntConst, wi = wins->mSrc[1].mIntConst; + int ri = int(rins->mSrc[0].mIntConst), wi = int(wins->mSrc[1].mIntConst); if (ri < 252 && wi < 252 && rins->mSrc[0].mTemp == wins->mSrc[1].mTemp && rins->mSrc[0].mMemory == IM_INDIRECT && wins->mSrc[1].mMemory == IM_INDIRECT) { @@ -2946,7 +2946,7 @@ void ByteCodeBasicBlock::LoadEffectiveAddress(InterCodeProcedure* proc, const In { ByteCodeInstruction bins(BC_BINOP_ADDI_16); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(bins); } else @@ -2957,7 +2957,7 @@ void ByteCodeBasicBlock::LoadEffectiveAddress(InterCodeProcedure* proc, const In mIns.Push(lins); ByteCodeInstruction ains(BC_BINOP_ADDI_16); ains.mRegister = BC_REG_ACCU; - ains.mValue = ins->mSrc[0].mIntConst; + ains.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(ains); ByteCodeInstruction sins(BC_STORE_REG_16); sins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; @@ -2971,7 +2971,7 @@ void ByteCodeBasicBlock::LoadEffectiveAddress(InterCodeProcedure* proc, const In ByteCodeInstruction bins(BC_LEA_ABS); bins.mRegister = BC_REG_ACCU; bins.mLinkerObject = ins->mSrc[1].mLinkerObject; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); bins.mRelocate = true; mIns.Push(bins); } @@ -2979,14 +2979,14 @@ void ByteCodeBasicBlock::LoadEffectiveAddress(InterCodeProcedure* proc, const In { ByteCodeInstruction bins(BC_LEA_ABS); bins.mRegister = BC_REG_ACCU; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_FPARAM || ins->mSrc[1].mMemory == IM_FFRAME) { ByteCodeInstruction bins(BC_CONST_16); bins.mRegister = BC_REG_ACCU; - bins.mValue = BC_REG_FPARAMS + ins->mSrc[1].mIntConst + ins->mSrc[1].mVarIndex; + bins.mValue = int(BC_REG_FPARAMS + ins->mSrc[1].mIntConst + ins->mSrc[1].mVarIndex); mIns.Push(bins); } else if (ins->mSrc[1].mMemory == IM_PROCEDURE) @@ -3002,7 +3002,7 @@ void ByteCodeBasicBlock::LoadEffectiveAddress(InterCodeProcedure* proc, const In { ByteCodeInstruction bins(BC_LEA_LOCAL); bins.mRegister = BC_REG_ACCU; - bins.mValue = ins->mSrc[1].mIntConst + proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; + bins.mValue = int(ins->mSrc[1].mIntConst + proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset); mIns.Push(bins); } @@ -3064,13 +3064,13 @@ void ByteCodeBasicBlock::CallAssembler(InterCodeProcedure* proc, const InterInst ByteCodeInstruction bins(BC_JSR); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[0].mLinkerObject; - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); for (int i = 1; i < ins->mNumOperands; i++) { if (ins->mSrc[i].mTemp < 0) { if (ins->mSrc[i].mMemory == IM_FPARAM || ins->mSrc[i].mMemory == IM_FFRAME) - ins->mSrc[0].mLinkerObject->mTemporaries[i - 1] = BC_REG_FPARAMS + ins->mSrc[i].mVarIndex + ins->mSrc[i].mIntConst; + ins->mSrc[0].mLinkerObject->mTemporaries[i - 1] = int(BC_REG_FPARAMS + ins->mSrc[i].mVarIndex + ins->mSrc[i].mIntConst); } else ins->mSrc[0].mLinkerObject->mTemporaries[i - 1] = BC_REG_TMP + proc->mTempOffset[ins->mSrc[i].mTemp]; @@ -3093,7 +3093,7 @@ void ByteCodeBasicBlock::CallNative(InterCodeProcedure* proc, const InterInstruc ByteCodeInstruction bins(BC_JSR); bins.mRelocate = true; bins.mLinkerObject = ins->mSrc[0].mLinkerObject; - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(bins); } @@ -3222,7 +3222,7 @@ ByteCode ByteCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const if (csigned) { ByteCodeInstruction cins(BC_BINOP_CMPSI_8); - cins.mValue = ins->mSrc[1].mIntConst; + cins.mValue = int(ins->mSrc[1].mIntConst); mIns.Push(cins); } else @@ -3246,7 +3246,7 @@ ByteCode ByteCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const else { ByteCodeInstruction cins(BC_BINOP_CMPUI_8); - cins.mValue = ins->mSrc[1].mIntConst; + cins.mValue = int(ins->mSrc[1].mIntConst); mIns.Push(cins); } } @@ -3284,7 +3284,7 @@ ByteCode ByteCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const else { ByteCodeInstruction cins(BC_BINOP_CMPSI_8); - cins.mValue = ins->mSrc[0].mIntConst; + cins.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(cins); } } @@ -3309,7 +3309,7 @@ ByteCode ByteCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const else { ByteCodeInstruction cins(BC_BINOP_CMPUI_8); - cins.mValue = ins->mSrc[0].mIntConst; + cins.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(cins); } } @@ -3348,13 +3348,13 @@ ByteCode ByteCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const if (csigned) { ByteCodeInstruction cins(BC_BINOP_CMPSI_16); - cins.mValue = ins->mSrc[1].mIntConst; + cins.mValue = int(ins->mSrc[1].mIntConst); mIns.Push(cins); } else { ByteCodeInstruction cins(BC_BINOP_CMPUI_16); - cins.mValue = ins->mSrc[1].mIntConst; + cins.mValue = int(ins->mSrc[1].mIntConst); mIns.Push(cins); } } @@ -3387,13 +3387,13 @@ ByteCode ByteCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const else if (ins->mSrc[1].IsUByte()) { ByteCodeInstruction cins(BC_BINOP_CMPUI_8); - cins.mValue = ins->mSrc[0].mIntConst; + cins.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(cins); } else { ByteCodeInstruction cins(BC_BINOP_CMPSI_16); - cins.mValue = ins->mSrc[0].mIntConst; + cins.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(cins); } } @@ -3418,13 +3418,13 @@ ByteCode ByteCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const else if (ins->mSrc[1].IsUByte()) { ByteCodeInstruction cins(BC_BINOP_CMPUI_8); - cins.mValue = ins->mSrc[0].mIntConst; + cins.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(cins); } else { ByteCodeInstruction cins(BC_BINOP_CMPUI_16); - cins.mValue = ins->mSrc[0].mIntConst; + cins.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(cins); } } @@ -3921,7 +3921,7 @@ void ByteCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterIns { ByteCodeInstruction bins(bcis); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); mIns.Push(bins); return; } @@ -3933,7 +3933,7 @@ void ByteCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterIns ByteCodeInstruction bins(bci); bins.mRegister = BC_REG_ACCU; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); mIns.Push(bins); } else if (ins->mSrc[0].mTemp < 0) @@ -3942,7 +3942,7 @@ void ByteCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterIns { ByteCodeInstruction bins(bcis); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(bins); return; } @@ -3954,7 +3954,7 @@ void ByteCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterIns ByteCodeInstruction bins(bci); bins.mRegister = BC_REG_ACCU; - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(bins); } else @@ -3978,7 +3978,7 @@ void ByteCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterIns { ByteCodeInstruction bins(BC_BINOP_SUBI_16); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); mIns.Push(bins); return; } @@ -3989,7 +3989,7 @@ void ByteCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterIns ByteCodeInstruction bins(BC_BINOP_SUBI_16); bins.mRegister = BC_REG_ACCU; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); mIns.Push(bins); } else if (ins->mSrc[0].mTemp < 0) @@ -3998,7 +3998,7 @@ void ByteCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterIns { ByteCodeInstruction bins(InterTypeSize[ins->mSrc[0].mType] == 1 ? BC_BINOP_ADDI_8 : BC_BINOP_ADDI_16); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - bins.mValue = - ins->mSrc[0].mIntConst; + bins.mValue = - int(ins->mSrc[0].mIntConst); mIns.Push(bins); return; } @@ -4009,7 +4009,7 @@ void ByteCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterIns ByteCodeInstruction bins(BC_BINOP_ADDI_16); bins.mRegister = BC_REG_ACCU; - bins.mValue = - ins->mSrc[0].mIntConst; + bins.mValue = - int(ins->mSrc[0].mIntConst); mIns.Push(bins); } else @@ -4038,7 +4038,7 @@ void ByteCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterIns ByteCodeInstruction bins(bci); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; bins.mRegisterFinal = ins->mSrc[0].mFinal; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); mIns.Push(bins); return; } @@ -4050,7 +4050,7 @@ void ByteCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterIns ByteCodeInstruction bins(bci); bins.mRegister = BC_REG_ACCU; - bins.mValue = ins->mSrc[1].mIntConst; + bins.mValue = int(ins->mSrc[1].mIntConst); mIns.Push(bins); } else @@ -4071,7 +4071,7 @@ void ByteCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterIns ByteCodeInstruction bins(bci); bins.mRegister = BC_REG_TMP + proc->mTempOffset[ins->mSrc[1].mTemp]; bins.mRegisterFinal = ins->mSrc[1].mFinal; - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(bins); return; } @@ -4083,7 +4083,7 @@ void ByteCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterIns ByteCodeInstruction bins(bci); bins.mRegister = BC_REG_ACCU; - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(bins); } else @@ -4205,7 +4205,7 @@ void ByteCodeBasicBlock::BinaryOperator(InterCodeProcedure* proc, const InterIns mIns.Push(lins); ByteCodeInstruction bins(ibc); - bins.mValue = ins->mSrc[0].mIntConst; + bins.mValue = int(ins->mSrc[0].mIntConst); mIns.Push(bins); } else @@ -4329,14 +4329,14 @@ void ByteCodeBasicBlock::Compile(InterCodeProcedure* iproc, ByteCodeProcedure* p case IC_PUSH_FRAME: { ByteCodeInstruction bins(BC_PUSH_FRAME); - bins.mValue = ins->mConst.mIntConst + 2; + bins.mValue = int(ins->mConst.mIntConst + 2); mIns.Push(bins); } break; case IC_POP_FRAME: { ByteCodeInstruction bins(BC_POP_FRAME); - bins.mValue = ins->mConst.mIntConst + 2; + bins.mValue = int(ins->mConst.mIntConst + 2); mIns.Push(bins); } break; diff --git a/oscar64/Compiler.cpp b/oscar64/Compiler.cpp index 35ecaa6..c8fdfbb 100644 --- a/oscar64/Compiler.cpp +++ b/oscar64/Compiler.cpp @@ -176,7 +176,7 @@ void Compiler::RegisterRuntime(const Location & loc, const Ident* ident) mInterCodeGenerator->TranslateAssembler(mInterCodeModule, bcdec->mBase->mValue, nullptr); linkerObject = bcdec->mBase->mLinkerObject; - offset = bcdec->mInteger; + offset = int(bcdec->mInteger); } else if (bcdec->mType == DT_VARIABLE) { @@ -728,7 +728,7 @@ bool Compiler::GenerateCode(void) if (!bcdec->mBase->mLinkerObject) mInterCodeGenerator->TranslateAssembler(mInterCodeModule, bcdec->mBase->mValue, nullptr); linkerObject = bcdec->mBase->mLinkerObject; - offset = bcdec->mInteger; + offset = int(bcdec->mInteger); } assert(linkerObject); @@ -788,7 +788,9 @@ bool Compiler::BuildLZO(const char* targetPath) Scanner* scanner = new Scanner(mErrors, mPreprocessor); while (scanner->mToken == TK_INTEGER) { - data[n++] = scanner->mTokenInteger; + if (scanner->mTokenInteger < 0 || scanner->mTokenInteger > 255) + mErrors->Error(scanner->mLocation, EWARN_CONSTANT_TRUNCATED, "Constant integer truncated"); + data[n++] = uint8(scanner->mTokenInteger); do { scanner->NextToken(); } while (scanner->mToken == TK_COMMA); diff --git a/oscar64/Declaration.cpp b/oscar64/Declaration.cpp index b5d6d89..b0847f9 100644 --- a/oscar64/Declaration.cpp +++ b/oscar64/Declaration.cpp @@ -291,7 +291,7 @@ Expression* Expression::ConstantFold(Errors * errors) Expression* ex = new Expression(mLocation, EX_CONSTANT); Declaration* dec = new Declaration(mLocation, DT_CONST_INTEGER); dec->mBase = mLeft->mDecType; - dec->mInteger = mRight->mDecValue->mNumber; + dec->mInteger = int64(mRight->mDecValue->mNumber); ex->mDecValue = dec; ex->mDecType = mLeft->mDecType; return ex; @@ -323,7 +323,7 @@ Expression* Expression::ConstantFold(Errors * errors) Expression* ex = new Expression(mLocation, EX_CONSTANT); Declaration* dec = new Declaration(mLocation, DT_CONST_FLOAT); dec->mBase = mLeft->mDecType; - dec->mNumber = mRight->mDecValue->mInteger; + dec->mNumber = double(mRight->mDecValue->mInteger); ex->mDecValue = dec; ex->mDecType = mLeft->mDecType; return ex; @@ -542,8 +542,8 @@ Expression* Expression::ConstantFold(Errors * errors) Declaration* dec = new Declaration(mLocation, DT_VARIABLE_REF); dec->mFlags = mLeft->mDecValue->mFlags; dec->mBase = mLeft->mDecValue; - dec->mSize = mLeft->mDecType->mBase->mSize - mRight->mDecValue->mInteger * dec->mSize; - dec->mOffset = mRight->mDecValue->mInteger * dec->mSize; + dec->mSize = mLeft->mDecType->mBase->mSize - int(mRight->mDecValue->mInteger) * dec->mSize; + dec->mOffset = int(mRight->mDecValue->mInteger) * dec->mSize; ex->mDecValue = dec; ex->mDecType = mLeft->mDecType; return ex; @@ -554,8 +554,8 @@ Expression* Expression::ConstantFold(Errors * errors) Declaration* dec = new Declaration(mLocation, DT_VARIABLE_REF); dec->mFlags = mLeft->mDecValue->mFlags; dec->mBase = mLeft->mDecValue->mBase; - dec->mSize = mLeft->mDecType->mBase->mSize - mRight->mDecValue->mInteger * dec->mSize; - dec->mOffset = mLeft->mDecValue->mOffset + mRight->mDecValue->mInteger * dec->mSize; + dec->mSize = mLeft->mDecType->mBase->mSize - int(mRight->mDecValue->mInteger) * dec->mSize; + dec->mOffset = mLeft->mDecValue->mOffset + int(mRight->mDecValue->mInteger) * dec->mSize; ex->mDecValue = dec; ex->mDecType = mLeft->mDecType; return ex; diff --git a/oscar64/Disassembler.cpp b/oscar64/Disassembler.cpp index 59f4bd5..042ce48 100644 --- a/oscar64/Disassembler.cpp +++ b/oscar64/Disassembler.cpp @@ -623,8 +623,6 @@ void NativeCodeDisassembler::DumpMemory(FILE* file, const uint8* memory, int ban else if (ident) fprintf(file, "%s:\n", ident->mString); - char tbuffer[10], abuffer[100]; - if (lobj->mSection->mType == LST_BSS) { if (bank >= 0) diff --git a/oscar64/DiskImage.cpp b/oscar64/DiskImage.cpp index bd03560..13b1020 100644 --- a/oscar64/DiskImage.cpp +++ b/oscar64/DiskImage.cpp @@ -53,7 +53,6 @@ DiskImage::DiskImage(const char* fname) for (int i = 0x90; i < 0xab; i++) bam[i] = 0xa0; - char dname[200]; int i = strlen(fname); while (i > 0 && fname[i - 1] != '/' && fname[i - 1] != '\\') diff --git a/oscar64/InterCode.cpp b/oscar64/InterCode.cpp index 0c081cd..5a06d6b 100644 --- a/oscar64/InterCode.cpp +++ b/oscar64/InterCode.cpp @@ -301,7 +301,7 @@ static bool MemPtrRange(const InterInstruction* ins, const GrowingInstructionPtr { mem = ins->mConst.mMemory; vindex = ins->mConst.mVarIndex; - offset = ins->mConst.mIntConst; + offset = int(ins->mConst.mIntConst); return true; } @@ -309,7 +309,7 @@ static bool MemPtrRange(const InterInstruction* ins, const GrowingInstructionPtr { mem = ins->mSrc[1].mMemory; vindex = ins->mSrc[1].mVarIndex; - offset = ins->mSrc[1].mIntConst; + offset = int(ins->mSrc[1].mIntConst); return true; } @@ -341,14 +341,14 @@ static bool MemRange(const InterInstruction* ins, const GrowingInstructionPtrArr { mem = ins->mSrc[0].mMemory; vindex = ins->mSrc[0].mVarIndex; - offset = ins->mSrc[0].mIntConst; + offset = int(ins->mSrc[0].mIntConst); size = ins->mSrc[0].mOperandSize; } else { mem = ins->mSrc[1].mMemory; vindex = ins->mSrc[1].mVarIndex; - offset = ins->mSrc[1].mIntConst; + offset = int(ins->mSrc[1].mIntConst); size = ins->mSrc[1].mOperandSize; } @@ -969,13 +969,13 @@ static void LoadConstantFold(InterInstruction* ins, InterInstruction* ains, cons if (ains) { lobj = ains->mConst.mLinkerObject; - offset = ains->mConst.mIntConst; + offset = int(ains->mConst.mIntConst); stride = ains->mConst.mStride; } else { lobj = ins->mSrc[0].mLinkerObject; - offset = ins->mSrc[0].mIntConst; + offset = int(ins->mSrc[0].mIntConst); stride = ins->mSrc[0].mStride; } @@ -1370,7 +1370,7 @@ static bool CanBypassStore(const InterInstruction* sins, const InterInstruction* sm = sins->mSrc[0].mMemory; si = sins->mSrc[0].mVarIndex; st = sins->mSrc[0].mTemp; - so = sins->mSrc[0].mIntConst; + so = int(sins->mSrc[0].mIntConst); slo = sins->mSrc[0].mLinkerObject; sz = InterTypeSize[sins->mDst.mType]; } @@ -1379,7 +1379,7 @@ static bool CanBypassStore(const InterInstruction* sins, const InterInstruction* sm = sins->mSrc[1].mMemory; si = sins->mSrc[1].mVarIndex; st = sins->mSrc[1].mTemp; - so = sins->mSrc[1].mIntConst; + so = int(sins->mSrc[1].mIntConst); slo = sins->mSrc[1].mLinkerObject; sz = InterTypeSize[sins->mSrc[0].mType]; } @@ -1389,7 +1389,7 @@ static bool CanBypassStore(const InterInstruction* sins, const InterInstruction* bm = bins->mSrc[0].mMemory; bi = bins->mSrc[0].mVarIndex; bt = bins->mSrc[0].mTemp; - bo = bins->mSrc[0].mIntConst; + bo = int(bins->mSrc[0].mIntConst); blo = bins->mSrc[0].mLinkerObject; bz = InterTypeSize[bins->mDst.mType]; } @@ -1398,7 +1398,7 @@ static bool CanBypassStore(const InterInstruction* sins, const InterInstruction* bm = bins->mSrc[1].mMemory; bi = bins->mSrc[1].mVarIndex; bt = bins->mSrc[1].mTemp; - bo = bins->mSrc[1].mIntConst; + bo = int(bins->mSrc[1].mIntConst); blo = bins->mSrc[1].mLinkerObject; bz = InterTypeSize[bins->mSrc[0].mType]; } @@ -2361,7 +2361,7 @@ void ValueSet::UpdateValue(InterInstruction * ins, const GrowingInstructionPtrAr if (tvalue[ins->mSrc[1].mTemp]->mOperator == IA_EXT8TO16S || tvalue[ins->mSrc[1].mTemp]->mOperator == IA_EXT8TO32S) { - int ivalue = tvalue[ins->mSrc[0].mTemp]->mConst.mIntConst; + int64 ivalue = tvalue[ins->mSrc[0].mTemp]->mConst.mIntConst; if (ivalue < -128) { toconst = true; @@ -2407,7 +2407,7 @@ void ValueSet::UpdateValue(InterInstruction * ins, const GrowingInstructionPtrAr } else if (tvalue[ins->mSrc[1].mTemp]->mOperator == IA_EXT8TO16U || tvalue[ins->mSrc[1].mTemp]->mOperator == IA_EXT8TO32U) { - int ivalue = tvalue[ins->mSrc[0].mTemp]->mConst.mIntConst; + int64 ivalue = tvalue[ins->mSrc[0].mTemp]->mConst.mIntConst; if (ivalue < 0) { toconst = true; @@ -2497,7 +2497,7 @@ void ValueSet::UpdateValue(InterInstruction * ins, const GrowingInstructionPtrAr if (tvalue[ins->mSrc[0].mTemp]->mOperator == IA_EXT8TO16S || tvalue[ins->mSrc[0].mTemp]->mOperator == IA_EXT8TO32S) { - int ivalue = tvalue[ins->mSrc[1].mTemp]->mConst.mIntConst; + int64 ivalue = tvalue[ins->mSrc[1].mTemp]->mConst.mIntConst; if (ivalue > 127) { toconst = true; @@ -2543,7 +2543,7 @@ void ValueSet::UpdateValue(InterInstruction * ins, const GrowingInstructionPtrAr } else if (tvalue[ins->mSrc[0].mTemp]->mOperator == IA_EXT8TO16U || tvalue[ins->mSrc[0].mTemp]->mOperator == IA_EXT8TO32U) { - int ivalue = tvalue[ins->mSrc[1].mTemp]->mConst.mIntConst; + int64 ivalue = tvalue[ins->mSrc[1].mTemp]->mConst.mIntConst; if (ivalue > 255) { toconst = true; @@ -4288,8 +4288,6 @@ static bool IsInfiniteLoop(InterCodeBasicBlock* head, InterCodeBasicBlock* block void InterCodeBasicBlock::GenerateTraces(bool expand, bool compact) { - int i; - if (mInPath) mLoopHead = true; @@ -5910,7 +5908,7 @@ void InterCodeBasicBlock::UpdateLocalIntegerRangeSets(const GrowingVariableArray assert(mLocalValueRange.Size() == mExitRequiredTemps.Size()); InterCodeBasicBlock * pblock; - int nloop; + int64 nloop; bool singleLoop = CheckSingleBlockLimitedLoop(pblock, nloop); @@ -6125,7 +6123,7 @@ void InterCodeBasicBlock::UpdateLocalIntegerRangeSets(const GrowingVariableArray { if (ins->mSrc[1].mTemp == ins->mDst.mTemp && dependTemps[ins->mDst.mTemp] && i + 3 != sz) { - int start = pblock->mTrueValueRange[ins->mDst.mTemp].mMinValue; + int64 start = pblock->mTrueValueRange[ins->mDst.mTemp].mMinValue; vr.SetLimit(start + ins->mSrc[0].mIntConst, start + nloop * ins->mSrc[0].mIntConst); } else @@ -6193,7 +6191,7 @@ void InterCodeBasicBlock::UpdateLocalIntegerRangeSets(const GrowingVariableArray else if (ins->mSrc[1].mTemp < 0) { vr = mLocalValueRange[ins->mSrc[0].mTemp]; - int maxv = vr.mMaxValue, minv = vr.mMinValue; + int64 maxv = vr.mMaxValue, minv = vr.mMinValue; if (vr.mMaxState == IntegerValueRange::S_WEAK) { @@ -6252,7 +6250,7 @@ void InterCodeBasicBlock::UpdateLocalIntegerRangeSets(const GrowingVariableArray if (vr.mMinState == IntegerValueRange::S_WEAK) vr.mMaxState = IntegerValueRange::S_UNBOUND; - int maxv = vr.mMaxValue, minv = vr.mMinValue; + int64 maxv = vr.mMaxValue, minv = vr.mMinValue; vr.mMaxValue = ins->mSrc[0].mIntConst * minv; vr.mMinValue = ins->mSrc[0].mIntConst * maxv; } @@ -6281,7 +6279,7 @@ void InterCodeBasicBlock::UpdateLocalIntegerRangeSets(const GrowingVariableArray if (vr.mMinState == IntegerValueRange::S_WEAK) vr.mMaxState = IntegerValueRange::S_UNBOUND; - int maxv = vr.mMaxValue, minv = vr.mMinValue; + int64 maxv = vr.mMaxValue, minv = vr.mMinValue; vr.mMaxValue = ins->mSrc[1].mIntConst * minv; vr.mMinValue = ins->mSrc[1].mIntConst * maxv; } @@ -8051,9 +8049,9 @@ static bool CheckSimplifyPointerOffsets(const InterInstruction* ins, int temp, i if (ins->mCode == IC_LOAD && ins->mSrc[0].mTemp == temp) { if (ins->mSrc[0].mIntConst < mino) - mino = ins->mSrc[0].mIntConst; + mino = int(ins->mSrc[0].mIntConst); if (ins->mSrc[0].mIntConst > maxo) - maxo = ins->mSrc[0].mIntConst; + maxo = int(ins->mSrc[0].mIntConst); return true; } @@ -8064,9 +8062,9 @@ static bool CheckSimplifyPointerOffsets(const InterInstruction* ins, int temp, i return false; if (ins->mSrc[1].mIntConst < mino) - mino = ins->mSrc[1].mIntConst; + mino = int(ins->mSrc[1].mIntConst); if (ins->mSrc[1].mIntConst > maxo) - maxo = ins->mSrc[1].mIntConst; + maxo = int(ins->mSrc[1].mIntConst); return true; } @@ -9258,7 +9256,7 @@ bool InterCodeBasicBlock::LoadStoreForwarding(const GrowingInstructionPtrArray& } else if (ins->mCode == IC_LEA && ins->mSrc[1].mTemp < 0 && ins->mSrc[1].mMemory == IM_ABSOLUTE && ins->mSrc[0].mTemp >= 0) { - int offset = ins->mSrc[1].mIntConst; + int offset = int(ins->mSrc[1].mIntConst); j = 0; while (j < mLoadStoreInstructions.Size() && !( @@ -10026,7 +10024,7 @@ bool InterCodeBasicBlock::ForwardDiamondMovedTemp(void) { if (mInstructions[j]->mCode == IC_LEA && mInstructions[j]->mSrc[1].mTemp == tins->mSrc[0].mTemp && mInstructions[j]->mSrc[0].mTemp < 0) { - offset += mInstructions[j]->mSrc[0].mIntConst; + offset += int(mInstructions[j]->mSrc[0].mIntConst); } else fail = true; @@ -10373,7 +10371,7 @@ void InterCodeBasicBlock::CollectOuterFrame(int level, int& size, bool &inner, b if (level == 1) { if (mInstructions[i]->mConst.mIntConst > size) - size = mInstructions[i]->mConst.mIntConst; + size = int(mInstructions[i]->mConst.mIntConst); mInstructions[i]->mCode = IC_NONE; } else @@ -10632,7 +10630,7 @@ void PromoteStaticStackParam(InterOperand& iop, LinkerObject* paramlobj) iop.mMemory = IM_GLOBAL; iop.mIntConst += offset; iop.mLinkerObject = paramlobj; - paramlobj->EnsureSpace(iop.mIntConst, iop.mOperandSize); + paramlobj->EnsureSpace(int(iop.mIntConst), iop.mOperandSize); } } } @@ -11129,7 +11127,7 @@ bool InterCodeBasicBlock::SingleTailLoopOptimization(const NumberSet& aliasedPar InterInstruction* si = FindSourceInstruction(mLoopPrefix, ai->mDst.mTemp); if (si && si->mCode == IC_CONSTANT) { - int num = (ci->mSrc[0].mIntConst - si->mSrc[0].mIntConst) / ai->mSrc[0].mIntConst; + int64 num = (ci->mSrc[0].mIntConst - si->mSrc[0].mIntConst) / ai->mSrc[0].mIntConst; if (num > 0) { ai->mOperator = IA_SUB; @@ -11574,13 +11572,13 @@ void InterCodeBasicBlock::SingleBlockLoopUnrolling(void) { if (mDominator->mTrueValueRange[ireg].IsConstant()) { - int start = mDominator->mTrueValueRange[ireg].mMinValue; - int end = mInstructions[nins - 2]->mSrc[0].mIntConst; + int64 start = mDominator->mTrueValueRange[ireg].mMinValue; + int64 end = mInstructions[nins - 2]->mSrc[0].mIntConst; if (mInstructions[nins - 2]->mOperator == IA_CMPLEU) end++; - int step = mInstructions[nins - 3]->mSrc[0].mTemp < 0 ? mInstructions[nins - 3]->mSrc[0].mIntConst : mInstructions[nins - 3]->mSrc[1].mIntConst; - int count = (end - start) / step; + int64 step = mInstructions[nins - 3]->mSrc[0].mTemp < 0 ? mInstructions[nins - 3]->mSrc[0].mIntConst : mInstructions[nins - 3]->mSrc[1].mIntConst; + int count = int((end - start) / step); if (count < 5 && (nins - 3) * count < 20) { @@ -11659,7 +11657,7 @@ void InterCodeBasicBlock::PushMoveOutOfLoop(void) else if (cins->mDst.mTemp == mins->mSrc[0].mTemp) { if (cins->mCode == IC_LEA && cins->mSrc[1].mTemp == mins->mSrc[0].mTemp && cins->mSrc[0].mTemp < 0) - offset += cins->mSrc[0].mIntConst; + offset += int(cins->mSrc[0].mIntConst); else fail = true; } @@ -11728,7 +11726,7 @@ void InterCodeBasicBlock::PushMoveOutOfLoop(void) } } -bool InterCodeBasicBlock::CheckSingleBlockLimitedLoop(InterCodeBasicBlock*& pblock, int& nloop) +bool InterCodeBasicBlock::CheckSingleBlockLimitedLoop(InterCodeBasicBlock*& pblock, int64& nloop) { if (mLoopHead && mNumEntries == 2 && mFalseJump && (mTrueJump == this || mFalseJump == this) && mInstructions.Size() > 3) { @@ -11829,10 +11827,10 @@ bool InterCodeBasicBlock::SingleBlockLoopPointerToByte(int& spareTemps) i++; if (i == nins - 3) { - int nloop = cins->mSrc[0].mIntConst; + int nloop = int(cins->mSrc[0].mIntConst); if (cins->mOperator == IA_CMPLEU) nloop++; - nloop /= ains->mSrc[0].mIntConst; + nloop /= int(ains->mSrc[0].mIntConst); for (int i = 0; i < mInstructions.Size() - 3; i++) { @@ -11887,7 +11885,7 @@ bool InterCodeBasicBlock::SingleBlockLoopPointerToByte(int& spareTemps) if (spareTemps + 2 >= mEntryRequiredTemps.Size() + 16) return true; - int inc = lins->mSrc[0].mIntConst; + int inc = int(lins->mSrc[0].mIntConst); int ireg = mtemps[inc]; @@ -12747,9 +12745,9 @@ void InterCodeBasicBlock::SingleBlockLoopOptimisation(const NumberSet& aliasedPa else if (cins->mDst.mTemp == st) { if (cins->mCode == IC_LEA && cins->mSrc[1].mTemp == st && cins->mSrc[0].mTemp < 0) - toffset += cins->mSrc[0].mIntConst; + toffset += int(cins->mSrc[0].mIntConst); else if (cins->mCode == IC_BINARY_OPERATOR && cins->mOperator == IA_ADD && cins->mSrc[1].mTemp == st && cins->mSrc[0].mTemp < 0) - toffset += cins->mSrc[0].mIntConst; + toffset += int(cins->mSrc[0].mIntConst); else break; } @@ -13006,7 +13004,7 @@ bool InterCodeBasicBlock::PeepholeReplaceOptimization(const GrowingVariableArray mInstructions[i + 1]->mSrc[1].mTemp == mInstructions[i + 0]->mDst.mTemp && mInstructions[i + 1]->mSrc[1].mFinal && (mInstructions[i + 1]->mSrc[0].mIntConst & (1LL << mInstructions[i + 0]->mSrc[0].mIntConst)) == 0) { - int shift = mInstructions[i + 0]->mSrc[0].mIntConst; + int64 shift = mInstructions[i + 0]->mSrc[0].mIntConst; mInstructions[i + 1]->mSrc[0].mIntConst >>= shift; mInstructions[i + 0]->mOperator = IA_AND; mInstructions[i + 0]->mSrc[0].mIntConst = ~((1LL << shift) - 1); @@ -13018,7 +13016,7 @@ bool InterCodeBasicBlock::PeepholeReplaceOptimization(const GrowingVariableArray mInstructions[i + 1]->mSrc[0].mTemp == mInstructions[i + 0]->mDst.mTemp && mInstructions[i + 1]->mSrc[0].mFinal && (mInstructions[i + 1]->mSrc[1].mIntConst & (1LL << mInstructions[i + 0]->mSrc[0].mIntConst)) == 0) { - int shift = mInstructions[i + 0]->mSrc[0].mIntConst; + int64 shift = mInstructions[i + 0]->mSrc[0].mIntConst; mInstructions[i + 1]->mSrc[1].mIntConst >>= shift; mInstructions[i + 0]->mOperator = IA_AND; mInstructions[i + 0]->mSrc[0].mIntConst = ~((1LL << shift) - 1); @@ -13111,8 +13109,8 @@ bool InterCodeBasicBlock::PeepholeReplaceOptimization(const GrowingVariableArray (mInstructions[i + 2]->mSrc[0].mIntConst & 1) == 0) { - int shift = mInstructions[i + 0]->mSrc[0].mIntConst; - int mshift = 1; + int64 shift = mInstructions[i + 0]->mSrc[0].mIntConst; + int64 mshift = 1; while (!(mInstructions[i + 2]->mSrc[0].mIntConst & (1ULL << mshift))) mshift++; @@ -13151,10 +13149,10 @@ bool InterCodeBasicBlock::PeepholeReplaceOptimization(const GrowingVariableArray mInstructions[i + 1]->mSrc[1].mTemp == mInstructions[i + 0]->mDst.mTemp && mInstructions[i + 1]->mSrc[1].mFinal) { - int shift = mInstructions[i + 0]->mSrc[0].mIntConst; + int64 shift = mInstructions[i + 0]->mSrc[0].mIntConst; if (shift & 7) { - int mshift = mInstructions[i + 1]->mSrc[0].mIntConst; + int64 mshift = mInstructions[i + 1]->mSrc[0].mIntConst; mInstructions[i + 0]->mOperator = IA_AND; mInstructions[i + 0]->mSrc[0].mType = IT_INT16; @@ -13230,7 +13228,7 @@ bool InterCodeBasicBlock::PeepholeReplaceOptimization(const GrowingVariableArray mInstructions[i + 1]->mSrc[1].mTemp == mInstructions[i + 0]->mDst.mTemp && mInstructions[i + 1]->mSrc[1].mFinal && mInstructions[i + 1]->mSrc[0].mTemp < 0) ) { - int v = mInstructions[i + 1]->mSrc[1].mIntConst; + int64 v = mInstructions[i + 1]->mSrc[1].mIntConst; InterOperator op = mInstructions[i + 1]->mOperator; if (mInstructions[i + 1]->mSrc[1].mTemp >= 0) { @@ -13631,7 +13629,7 @@ bool InterCodeBasicBlock::PeepholeReplaceOptimization(const GrowingVariableArray { if ((o0 == IA_ADD || o0 == IA_SUB && c0 == 0) && (o1 == IA_ADD || o1 == IA_SUB && c1 == 0)) { - int iconst = + int64 iconst = (o1 == IA_ADD ? mInstructions[s1]->mSrc[c1].mIntConst : -mInstructions[s1]->mSrc[c1].mIntConst) - (o0 == IA_ADD ? mInstructions[s0]->mSrc[c0].mIntConst : -mInstructions[s0]->mSrc[c0].mIntConst); @@ -13650,7 +13648,7 @@ bool InterCodeBasicBlock::PeepholeReplaceOptimization(const GrowingVariableArray { if ((o0 == IA_ADD || o0 == IA_SUB && c0 == 0) && (o1 == IA_ADD || o1 == IA_SUB && c1 == 0)) { - int iconst = + int64 iconst = (o1 == IA_ADD ? mInstructions[s1]->mSrc[c1].mIntConst : -mInstructions[s1]->mSrc[c1].mIntConst) + (o0 == IA_ADD ? mInstructions[s0]->mSrc[c0].mIntConst : -mInstructions[s0]->mSrc[c0].mIntConst); @@ -13709,7 +13707,7 @@ bool InterCodeBasicBlock::PeepholeReplaceOptimization(const GrowingVariableArray mInstructions[i + 3]->mCode == IC_LEA && mInstructions[i + 3]->mSrc[1].mTemp < 0 && mInstructions[i + 3]->mSrc[0].mTemp == mInstructions[i + 2]->mDst.mTemp && mInstructions[i + 3]->mSrc[0].mFinal) { - int d = mInstructions[i + 0]->mSrc[0].mIntConst * mInstructions[i + 1]->mSrc[0].mIntConst; + int64 d = mInstructions[i + 0]->mSrc[0].mIntConst * mInstructions[i + 1]->mSrc[0].mIntConst; mInstructions[i + 3]->mSrc[1].mIntConst += d; mInstructions[i + 1]->mSrc[1] = mInstructions[i + 0]->mSrc[1]; mInstructions[i + 1]->mDst.mRange.mMinValue -= d; mInstructions[i + 1]->mDst.mRange.mMaxValue -= d; @@ -14142,7 +14140,7 @@ void InterCodeBasicBlock::PeepholeOptimization(const GrowingVariableArray& stati { if (ins->mCode == IC_BINARY_OPERATOR && ins->mOperator == IA_ADD && ins->mSrc[0].mTemp < 0 && ins->mSrc[1].mTemp == si) { - ioffset += ins->mSrc[0].mIntConst; + ioffset += int(ins->mSrc[0].mIntConst); ains = ins; } else @@ -14285,7 +14283,7 @@ void InterCodeBasicBlock::CollectVariables(GrowingVariableArray& globalVars, Gro if (!localVars[varIndex]) localVars[varIndex] = new InterVariable; - int size = ins->mConst.mOperandSize + ins->mConst.mIntConst; + int size = int(ins->mConst.mOperandSize + ins->mConst.mIntConst); if (size > localVars[varIndex]->mSize) localVars[varIndex]->mSize = size; localVars[varIndex]->mAliased = true; @@ -14296,7 +14294,7 @@ void InterCodeBasicBlock::CollectVariables(GrowingVariableArray& globalVars, Gro if (!paramVars[varIndex]) paramVars[varIndex] = new InterVariable; - int size = ins->mConst.mOperandSize + ins->mConst.mIntConst; + int size = int(ins->mConst.mOperandSize + ins->mConst.mIntConst); if (size > paramVars[varIndex]->mSize) paramVars[varIndex]->mSize = size; paramVars[varIndex]->mAliased = true; @@ -14310,7 +14308,7 @@ void InterCodeBasicBlock::CollectVariables(GrowingVariableArray& globalVars, Gro if (!localVars[varIndex]) localVars[varIndex] = new InterVariable; - int size = ins->mSrc[1].mOperandSize + ins->mSrc[1].mIntConst; + int size = int(ins->mSrc[1].mOperandSize + ins->mSrc[1].mIntConst); if (size > localVars[varIndex]->mSize) localVars[varIndex]->mSize = size; localVars[varIndex]->mAliased = true; @@ -14321,7 +14319,7 @@ void InterCodeBasicBlock::CollectVariables(GrowingVariableArray& globalVars, Gro if (!paramVars[varIndex]) paramVars[varIndex] = new InterVariable; - int size = ins->mSrc[1].mOperandSize + ins->mSrc[1].mIntConst; + int size = int(ins->mSrc[1].mOperandSize + ins->mSrc[1].mIntConst); if (size > paramVars[varIndex]->mSize) paramVars[varIndex]->mSize = size; paramVars[varIndex]->mAliased = true; @@ -14343,7 +14341,7 @@ void InterCodeBasicBlock::CollectVariables(GrowingVariableArray& globalVars, Gro if (!localVars[varIndex]) localVars[varIndex] = new InterVariable; - int size = ins->mSrc[j].mOperandSize + ins->mSrc[j].mIntConst; + int size = int(ins->mSrc[j].mOperandSize + ins->mSrc[j].mIntConst); if (size > localVars[varIndex]->mSize) localVars[varIndex]->mSize = size; } @@ -14353,7 +14351,7 @@ void InterCodeBasicBlock::CollectVariables(GrowingVariableArray& globalVars, Gro if (!paramVars[varIndex]) paramVars[varIndex] = new InterVariable; - int size = ins->mSrc[j].mOperandSize + ins->mSrc[j].mIntConst; + int size = int(ins->mSrc[j].mOperandSize + ins->mSrc[j].mIntConst); if (size > paramVars[varIndex]->mSize) paramVars[varIndex]->mSize = size; } @@ -15336,7 +15334,6 @@ void InterCodeProcedure::PropagateConstOperationsUp(void) void InterCodeProcedure::Close(void) { - int i, j, k, start; GrowingTypeArray tstack(IT_NONE); mEntryBlock = mBlocks[0]; diff --git a/oscar64/InterCode.h b/oscar64/InterCode.h index 7803770..a4edf8c 100644 --- a/oscar64/InterCode.h +++ b/oscar64/InterCode.h @@ -426,7 +426,7 @@ public: bool BuildGlobalRequiredStaticVariableSet(const GrowingVariableArray& staticVars, NumberSet& fromRequiredVars); bool RemoveUnusedStaticStoreInstructions(const GrowingVariableArray& staticVars); - bool CheckSingleBlockLimitedLoop(InterCodeBasicBlock*& pblock, int& nloop); + bool CheckSingleBlockLimitedLoop(InterCodeBasicBlock*& pblock, int64 & nloop); void RestartLocalIntegerRangeSets(int num, const GrowingVariableArray& localVars, const GrowingVariableArray& paramVars); void BuildLocalIntegerRangeSets(int num, const GrowingVariableArray& localVars, const GrowingVariableArray& paramVars); diff --git a/oscar64/InterCodeGenerator.cpp b/oscar64/InterCodeGenerator.cpp index da136d6..0f96d6b 100644 --- a/oscar64/InterCodeGenerator.cpp +++ b/oscar64/InterCodeGenerator.cpp @@ -474,7 +474,7 @@ void InterCodeGenerator::TranslateAssembler(InterCodeModule* mod, Expression* ex else ref.mFlags = LREF_LOWBYTE; ref.mRefObject = aexp->mBase->mBase->mLinkerObject; - ref.mRefOffset = aexp->mOffset + aexp->mBase->mInteger; + ref.mRefOffset = aexp->mOffset + int(aexp->mBase->mInteger); ref.mRefObject->mFlags |= LOBJF_RELEVANT; dec->mLinkerObject->AddReference(ref); } @@ -581,7 +581,7 @@ void InterCodeGenerator::TranslateAssembler(InterCodeModule* mod, Expression* ex mErrors->Error(aexp->mLocation, EERR_ASM_INVALD_OPERAND, "Local variable outside scope"); } else - d[offset] = aexp->mInteger; + d[offset] = uint8(aexp->mInteger); offset += 1; break; case ASMIM_ABSOLUTE: @@ -592,8 +592,8 @@ void InterCodeGenerator::TranslateAssembler(InterCodeModule* mod, Expression* ex mErrors->Error(cexp->mLocation, EERR_ASM_INVALD_OPERAND, "Missing assembler operand"); else if (aexp->mType == DT_CONST_INTEGER) { - d[offset + 0] = cexp->mLeft->mDecValue->mInteger & 255; - d[offset + 1] = cexp->mLeft->mDecValue->mInteger >> 8; + d[offset + 0] = uint8(cexp->mLeft->mDecValue->mInteger & 255); + d[offset + 1] = uint8(cexp->mLeft->mDecValue->mInteger >> 8); } else if (aexp->mType == DT_LABEL) { @@ -607,7 +607,7 @@ void InterCodeGenerator::TranslateAssembler(InterCodeModule* mod, Expression* ex ref.mOffset = offset; ref.mFlags = LREF_LOWBYTE | LREF_HIGHBYTE; ref.mRefObject = aexp->mBase->mLinkerObject; - ref.mRefOffset = aexp->mInteger; + ref.mRefOffset = uint8(aexp->mInteger); ref.mRefObject->mFlags |= LOBJF_RELEVANT; dec->mLinkerObject->AddReference(ref); } @@ -626,7 +626,7 @@ void InterCodeGenerator::TranslateAssembler(InterCodeModule* mod, Expression* ex ref.mOffset = offset; ref.mFlags = LREF_LOWBYTE | LREF_HIGHBYTE; ref.mRefObject = aexp->mBase->mBase->mLinkerObject; - ref.mRefOffset = aexp->mOffset + aexp->mBase->mInteger; + ref.mRefOffset = aexp->mOffset + int(aexp->mBase->mInteger); ref.mRefObject->mFlags |= LOBJF_RELEVANT; dec->mLinkerObject->AddReference(ref); } @@ -722,12 +722,12 @@ void InterCodeGenerator::TranslateAssembler(InterCodeModule* mod, Expression* ex if (aexp->mType == DT_LABEL_REF) { if (aexp->mBase->mBase) - d[offset] = aexp->mOffset + aexp->mBase->mInteger - offset - 1; + d[offset] = uint8(aexp->mOffset + aexp->mBase->mInteger - offset - 1); else mErrors->Error(aexp->mLocation, EERR_ASM_INVALD_OPERAND, "Undefined immediate operand", aexp->mBase->mIdent); } else - d[offset] = aexp->mInteger - offset - 1; + d[offset] = uint8(aexp->mInteger - offset - 1); } offset++; break; @@ -844,7 +844,6 @@ void InterCodeGenerator::BuildSwitchTree(InterCodeProcedure* proc, Expression* e InterCodeGenerator::ExValue InterCodeGenerator::TranslateInline(Declaration* procType, InterCodeProcedure* proc, InterCodeBasicBlock*& block, Expression* exp, InterCodeBasicBlock* breakBlock, InterCodeBasicBlock* continueBlock, InlineMapper* inlineMapper, bool inlineConstexpr) { - Declaration* dec; ExValue vl, vr; Declaration* fdec = exp->mLeft->mDecValue; @@ -2325,9 +2324,9 @@ InterCodeGenerator::ExValue InterCodeGenerator::TranslateExpression(Declaration* ins->mSrc[1].mType = IT_POINTER; ins->mSrc[1].mMemory = IM_INDIRECT; ins->mSrc[1].mTemp = vl.mTemp; - ins->mSrc[0].mOperandSize = nex->mDecValue->mInteger; - ins->mSrc[1].mOperandSize = nex->mDecValue->mInteger; - ins->mConst.mOperandSize = nex->mDecValue->mInteger; + ins->mSrc[0].mOperandSize = int(nex->mDecValue->mInteger); + ins->mSrc[1].mOperandSize = int(nex->mDecValue->mInteger); + ins->mConst.mOperandSize = int(nex->mDecValue->mInteger); block->Append(ins); return vl; @@ -3491,7 +3490,7 @@ InterCodeGenerator::ExValue InterCodeGenerator::TranslateExpression(Declaration* snode.mValue = 0; if (cexp->mLeft->mType == EX_CONSTANT && cexp->mLeft->mDecValue->mType == DT_CONST_INTEGER) - snode.mValue = cexp->mLeft->mDecValue->mInteger; + snode.mValue = int(cexp->mLeft->mDecValue->mInteger); else mErrors->Error(cexp->mLeft->mLocation, ERRR_INVALID_CASE, "Integral constant expected"); @@ -3589,12 +3588,12 @@ void InterCodeGenerator::BuildInitializer(InterCodeModule * mod, uint8* dp, int { int64 t = data->mInteger; dp[offset + 0] = uint8(t & 0xff); - dp[offset + data->mBase->mStripe] = t >> 8; + dp[offset + data->mBase->mStripe] = uint8(t >> 8); } else if (data->mType == DT_CONST_FLOAT) { union { float f; uint32 i; } cast; - cast.f = data->mNumber; + cast.f = float(data->mNumber); int64 t = cast.i; for (int i = 0; i < 4; i++) { diff --git a/oscar64/Linker.h b/oscar64/Linker.h index 925b4e1..3fc3389 100644 --- a/oscar64/Linker.h +++ b/oscar64/Linker.h @@ -268,7 +268,7 @@ public: bool mCartridgeBankUsed[64]; - uint32 mCartridgeBankStart[64], mCartridgeBankEnd[64]; + int mCartridgeBankStart[64], mCartridgeBankEnd[64]; int mProgramStart, mProgramEnd; diff --git a/oscar64/NativeCodeGenerator.cpp b/oscar64/NativeCodeGenerator.cpp index f55eb56..c6456f1 100644 --- a/oscar64/NativeCodeGenerator.cpp +++ b/oscar64/NativeCodeGenerator.cpp @@ -281,8 +281,8 @@ NativeCodeInstruction::NativeCodeInstruction(void) : mIns(nullptr), mType(ASMIT_INV), mMode(ASMIM_IMPLIED), mAddress(0), mLinkerObject(nullptr), mFlags(NCIF_LOWER | NCIF_UPPER), mParam(0), mLive(LIVE_ALL) {} -NativeCodeInstruction::NativeCodeInstruction(const InterInstruction* ins, AsmInsType type, AsmInsMode mode, int address, LinkerObject* linkerObject, uint32 flags, int param) - : mIns(ins), mType(type), mMode(mode), mAddress(address), mLinkerObject(linkerObject), mFlags(flags), mParam(param), mLive(LIVE_ALL) +NativeCodeInstruction::NativeCodeInstruction(const InterInstruction* ins, AsmInsType type, AsmInsMode mode, int64 address, LinkerObject* linkerObject, uint32 flags, int param) + : mIns(ins), mType(type), mMode(mode), mAddress(int(address)), mLinkerObject(linkerObject), mFlags(flags), mParam(param), mLive(LIVE_ALL) { if (mode == ASMIM_IMMEDIATE_ADDRESS) { @@ -4395,7 +4395,7 @@ void NativeCodeInstruction::Assemble(NativeCodeBasicBlock* block) { if (mType == ASMIT_JSR && (mFlags & NCIF_USE_ZP_32_X)) { - block->PutByte(AsmInsOpcodes[ASMIT_LDX][ASMIM_IMMEDIATE]); + block->PutOpcode(AsmInsOpcodes[ASMIT_LDX][ASMIM_IMMEDIATE]); block->PutByte(mParam); } @@ -4418,12 +4418,12 @@ void NativeCodeInstruction::Assemble(NativeCodeBasicBlock* block) { assert((mFlags & (NCIF_LOWER | NCIF_UPPER)) != (NCIF_LOWER | NCIF_UPPER)); assert(HasAsmInstructionMode(mType, ASMIM_IMMEDIATE)); - block->PutByte(AsmInsOpcodes[mType][ASMIM_IMMEDIATE]); + block->PutOpcode(AsmInsOpcodes[mType][ASMIM_IMMEDIATE]); } else { assert(HasAsmInstructionMode(mType, mode)); - block->PutByte(AsmInsOpcodes[mType][mode]); + block->PutOpcode(AsmInsOpcodes[mType][mode]); } switch (mode) @@ -4547,6 +4547,12 @@ void NativeCodeBasicBlock::PutLocation(const Location& location) } } +void NativeCodeBasicBlock::PutOpcode(short opcode) +{ + assert(opcode >= 0 && opcode < 256); + this->mCode.Push(uint8(opcode)); +} + void NativeCodeBasicBlock::PutByte(uint8 code) { this->mCode.Push(code); @@ -4610,9 +4616,9 @@ int NativeCodeBasicBlock::PutJump(NativeCodeProcedure* proc, NativeCodeBasicBloc if (mNDataSet.mRegs[CPU_REG_C].mMode == NRDM_IMMEDIATE) { if (mNDataSet.mRegs[CPU_REG_C].mValue) - PutByte(AsmInsOpcodes[ASMIT_BCS][ASMIM_RELATIVE]); + PutOpcode(AsmInsOpcodes[ASMIT_BCS][ASMIM_RELATIVE]); else - PutByte(AsmInsOpcodes[ASMIT_BCC][ASMIM_RELATIVE]); + PutOpcode(AsmInsOpcodes[ASMIT_BCC][ASMIM_RELATIVE]); PutByte(offset - 2); return 2; @@ -4620,9 +4626,9 @@ int NativeCodeBasicBlock::PutJump(NativeCodeProcedure* proc, NativeCodeBasicBloc else if (mNDataSet.mRegs[CPU_REG_Z].mMode == NRDM_IMMEDIATE) { if (mNDataSet.mRegs[CPU_REG_Z].mValue) - PutByte(AsmInsOpcodes[ASMIT_BNE][ASMIM_RELATIVE]); + PutOpcode(AsmInsOpcodes[ASMIT_BNE][ASMIM_RELATIVE]); else - PutByte(AsmInsOpcodes[ASMIT_BEQ][ASMIM_RELATIVE]); + PutOpcode(AsmInsOpcodes[ASMIT_BEQ][ASMIM_RELATIVE]); PutByte(offset - 2); return 2; @@ -4684,13 +4690,13 @@ int NativeCodeBasicBlock::PutBranch(NativeCodeProcedure* proc, NativeCodeBasicBl { if (offset >= -126 && offset <= 129) { - PutByte(AsmInsOpcodes[code][ASMIM_RELATIVE]); + PutOpcode(AsmInsOpcodes[code][ASMIM_RELATIVE]); PutByte(offset - 2); return 2; } else { - PutByte(AsmInsOpcodes[InvertBranchCondition(code)][ASMIM_RELATIVE]); + PutOpcode(AsmInsOpcodes[InvertBranchCondition(code)][ASMIM_RELATIVE]); if (target->mIns.Size() == 1 && target->mIns[0].mType == ASMIT_RTS) { @@ -4722,7 +4728,7 @@ void NativeCodeBasicBlock::LoadConstantToReg(InterCodeProcedure * proc, const In if (type == IT_FLOAT) { union { float f; unsigned int v; } cc; - cc.f = ins->mConst.mFloatConst; + cc.f = float(ins->mConst.mFloatConst); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_IMMEDIATE, cc.v & 0xff)); mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, reg)); @@ -4758,7 +4764,7 @@ void NativeCodeBasicBlock::LoadConstantToReg(InterCodeProcedure * proc, const In } else if (ins->mConst.mMemory == IM_FRAME) { - int index = ins->mConst.mVarIndex + ins->mConst.mIntConst + 2; + int index = ins->mConst.mVarIndex + int(ins->mConst.mIntConst) + 2; mIns.Push(NativeCodeInstruction(ins, ASMIT_CLC, ASMIM_IMPLIED)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_STACK)); @@ -4770,7 +4776,7 @@ void NativeCodeBasicBlock::LoadConstantToReg(InterCodeProcedure * proc, const In } else if (ins->mConst.mMemory == IM_LOCAL || ins->mConst.mMemory == IM_PARAM) { - int index = ins->mConst.mIntConst; + int index = int(ins->mConst.mIntConst); int areg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mConst.mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mConst.mVarIndex]->mOffset; @@ -4863,7 +4869,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr if (ins->mSrc[0].mTemp < 0) { union { float f; unsigned int v; } cc; - cc.f = ins->mSrc[0].mFloatConst; + cc.f = float(ins->mSrc[0].mFloatConst); if (ins->mSrc[1].mMemory == IM_GLOBAL) { @@ -4900,7 +4906,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int reg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; @@ -4924,7 +4930,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_FRAME) { - int index = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + int index = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDY, ASMIM_IMMEDIATE, index)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_IMMEDIATE, cc.v & 0xff)); @@ -4986,7 +4992,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int reg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; @@ -5010,7 +5016,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_FRAME) { - int index = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + int index = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDY, ASMIM_IMMEDIATE, index)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ZERO_PAGE, sreg)); @@ -5034,10 +5040,10 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr if (ins->mSrc[1].mMemory == IM_INDIRECT) { union { float f; unsigned int v; } cc; - cc.f = ins->mSrc[0].mFloatConst; + cc.f = float(ins->mSrc[0].mFloatConst); int reg = BC_REG_TMP + proc->mTempOffset[ins->mSrc[1].mTemp]; - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int stride = ins->mSrc[1].mStride; if (stride * 4 <= 256) @@ -5071,7 +5077,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr if (ins->mSrc[1].mMemory == IM_INDIRECT) { int reg = BC_REG_TMP + proc->mTempOffset[ins->mSrc[1].mTemp]; - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int stride = ins->mSrc[1].mStride; if (stride * 4 <= 256) @@ -5133,7 +5139,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int reg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; @@ -5151,7 +5157,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_FRAME) { - int index = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + int index = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDY, ASMIM_IMMEDIATE, index)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_IMMEDIATE, ins->mSrc[0].mIntConst & 0xff)); @@ -5186,7 +5192,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int reg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; @@ -5204,7 +5210,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_FRAME) { - int index = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + int index = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDY, ASMIM_IMMEDIATE, index)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp])); @@ -5222,7 +5228,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr if (ins->mSrc[1].mMemory == IM_INDIRECT) { int reg = BC_REG_TMP + proc->mTempOffset[ins->mSrc[1].mTemp]; - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int stride = ins->mSrc[1].mStride; if (2 * stride <= 256) @@ -5256,7 +5262,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr if (ins->mSrc[1].mMemory == IM_INDIRECT) { int reg = BC_REG_TMP + proc->mTempOffset[ins->mSrc[1].mTemp]; - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int stride = ins->mSrc[1].mStride; if (2 * stride <= 256) @@ -5312,7 +5318,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int reg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; @@ -5327,7 +5333,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_FRAME) { - int index = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + int index = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDY, ASMIM_IMMEDIATE, index)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_IMMEDIATE, ins->mSrc[0].mIntConst & 0xff)); @@ -5361,7 +5367,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int reg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; @@ -5379,7 +5385,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_FRAME) { - int index = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + int index = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDY, ASMIM_IMMEDIATE, index)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_IMMEDIATE, ins->mSrc[0].mIntConst & 0xff)); @@ -5428,7 +5434,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int reg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; @@ -5452,7 +5458,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_FRAME) { - int index = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + int index = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDY, ASMIM_IMMEDIATE, index)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_IMMEDIATE, ins->mSrc[0].mIntConst & 0xff)); @@ -5490,7 +5496,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int reg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; @@ -5505,7 +5511,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_FRAME) { - int index = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + int index = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDY, ASMIM_IMMEDIATE, index)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp])); @@ -5539,7 +5545,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int reg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[1].mMemory == IM_LOCAL) @@ -5558,7 +5564,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_FRAME) { - int index = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + int index = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDY, ASMIM_IMMEDIATE, index)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp])); @@ -5607,7 +5613,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int reg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[1].mMemory == IM_LOCAL) @@ -5632,7 +5638,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr } else if (ins->mSrc[1].mMemory == IM_FRAME) { - int index = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + int index = int(ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDY, ASMIM_IMMEDIATE, index)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp])); @@ -5657,7 +5663,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr if (ins->mSrc[1].mMemory == IM_INDIRECT) { int reg = BC_REG_TMP + proc->mTempOffset[ins->mSrc[1].mTemp]; - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int stride = ins->mSrc[1].mStride; int size = InterTypeSize[ins->mSrc[0].mType]; @@ -5692,7 +5698,7 @@ void NativeCodeBasicBlock::StoreValue(InterCodeProcedure* proc, const InterInstr if (ins->mSrc[1].mMemory == IM_INDIRECT) { int reg = BC_REG_TMP + proc->mTempOffset[ins->mSrc[1].mTemp]; - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int stride = ins->mSrc[1].mStride; int size = InterTypeSize[ins->mSrc[0].mType]; @@ -5770,7 +5776,7 @@ void NativeCodeBasicBlock::LoadStoreIndirectValue(InterCodeProcedure* proc, cons int size = InterTypeSize[wins->mSrc[0].mType]; AsmInsMode rmode = ASMIM_INDIRECT_Y; - int rindex = rins->mSrc[0].mIntConst; + int rindex = int(rins->mSrc[0].mIntConst); int rareg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; LinkerObject* rlobject = nullptr; int rstride = rins->mSrc[0].mStride; @@ -5791,10 +5797,10 @@ void NativeCodeBasicBlock::LoadStoreIndirectValue(InterCodeProcedure* proc, cons case IM_GLOBAL: rmode = ASMIM_ABSOLUTE; rlobject = rins->mSrc[0].mLinkerObject; - rindex = rins->mSrc[0].mIntConst; + rindex = int(rins->mSrc[0].mIntConst); break; case IM_FRAME: - rindex = rins->mSrc[0].mVarIndex + rins->mSrc[0].mIntConst + 2; + rindex = int(rins->mSrc[0].mVarIndex + rins->mSrc[0].mIntConst + 2); rareg = BC_REG_STACK; break; case IM_INDIRECT: @@ -5802,17 +5808,17 @@ void NativeCodeBasicBlock::LoadStoreIndirectValue(InterCodeProcedure* proc, cons break; case IM_ABSOLUTE: rmode = ASMIM_ABSOLUTE; - rindex = rins->mSrc[0].mIntConst; + rindex = int(rins->mSrc[0].mIntConst); break; case IM_FPARAM: case IM_FFRAME: rmode = ASMIM_ZERO_PAGE; - rareg = BC_REG_FPARAMS + rins->mSrc[0].mVarIndex + rins->mSrc[0].mIntConst; + rareg = int(BC_REG_FPARAMS + rins->mSrc[0].mVarIndex + rins->mSrc[0].mIntConst); break; } AsmInsMode wmode = ASMIM_INDIRECT_Y; - int windex = wins->mSrc[1].mIntConst; + int windex = int(wins->mSrc[1].mIntConst); int wareg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; LinkerObject* wlobject = nullptr; int wstride = wins->mSrc[1].mStride; @@ -5833,10 +5839,10 @@ void NativeCodeBasicBlock::LoadStoreIndirectValue(InterCodeProcedure* proc, cons case IM_GLOBAL: wmode = ASMIM_ABSOLUTE; wlobject = wins->mSrc[1].mLinkerObject; - windex = wins->mSrc[1].mIntConst; + windex = int(wins->mSrc[1].mIntConst); break; case IM_FRAME: - windex = wins->mSrc[1].mVarIndex + wins->mSrc[1].mIntConst + 2; + windex = int(wins->mSrc[1].mVarIndex + wins->mSrc[1].mIntConst + 2); wareg = BC_REG_STACK; break; case IM_INDIRECT: @@ -5844,12 +5850,12 @@ void NativeCodeBasicBlock::LoadStoreIndirectValue(InterCodeProcedure* proc, cons break; case IM_ABSOLUTE: wmode = ASMIM_ABSOLUTE; - windex = wins->mSrc[1].mIntConst; + windex = int(wins->mSrc[1].mIntConst); break; case IM_FPARAM: case IM_FFRAME: wmode = ASMIM_ZERO_PAGE; - wareg = BC_REG_FPARAMS + wins->mSrc[1].mVarIndex + wins->mSrc[1].mIntConst; + wareg = BC_REG_FPARAMS + wins->mSrc[1].mVarIndex + int(wins->mSrc[1].mIntConst); break; } @@ -5925,7 +5931,7 @@ void NativeCodeBasicBlock::LoadStoreValue(InterCodeProcedure* proc, const InterI } else if (rins->mSrc[0].mMemory == IM_LOCAL || rins->mSrc[0].mMemory == IM_PARAM) { - int index = rins->mSrc[0].mIntConst; + int index = int(rins->mSrc[0].mIntConst); int areg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (rins->mSrc[0].mMemory == IM_LOCAL) index += proc->mLocalVars[rins->mSrc[0].mVarIndex]->mOffset; @@ -5943,7 +5949,7 @@ void NativeCodeBasicBlock::LoadStoreValue(InterCodeProcedure* proc, const InterI if (rins->mSrc[0].mMemory == IM_INDIRECT) { int areg = BC_REG_TMP + proc->mTempOffset[rins->mSrc[0].mTemp]; - int index = rins->mSrc[0].mIntConst; + int index = int(rins->mSrc[0].mIntConst); CheckFrameIndex(rins, areg, index, 1); @@ -5968,7 +5974,7 @@ void NativeCodeBasicBlock::LoadStoreValue(InterCodeProcedure* proc, const InterI } else if (wins->mSrc[1].mMemory == IM_LOCAL || wins->mSrc[1].mMemory == IM_PARAM) { - int index = wins->mSrc[1].mIntConst; + int index = int(wins->mSrc[1].mIntConst); int areg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (wins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[wins->mSrc[1].mVarIndex]->mOffset; @@ -5982,7 +5988,7 @@ void NativeCodeBasicBlock::LoadStoreValue(InterCodeProcedure* proc, const InterI } else if (wins->mSrc[1].mMemory == IM_FRAME) { - int index = wins->mSrc[1].mVarIndex + wins->mSrc[1].mIntConst + 2; + int index = wins->mSrc[1].mVarIndex + int(wins->mSrc[1].mIntConst) + 2; mIns.Push(NativeCodeInstruction(wins, ASMIT_LDY, ASMIM_IMMEDIATE, index)); mIns.Push(NativeCodeInstruction(wins, ASMIT_STA, ASMIM_INDIRECT_Y, BC_REG_STACK)); @@ -5993,7 +5999,7 @@ void NativeCodeBasicBlock::LoadStoreValue(InterCodeProcedure* proc, const InterI if (wins->mSrc[1].mMemory == IM_INDIRECT) { int areg = BC_REG_TMP + proc->mTempOffset[wins->mSrc[1].mTemp]; - int index = wins->mSrc[1].mIntConst; + int index = int(wins->mSrc[1].mIntConst); CheckFrameIndex(wins, areg, index, 1); @@ -6082,7 +6088,7 @@ bool NativeCodeBasicBlock::LoadUnopStoreIndirectValue(InterCodeProcedure* proc, return false; } - int rindex = rins->mSrc[0].mIntConst; + int rindex = int(rins->mSrc[0].mIntConst); int rareg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; switch (rins->mSrc[0].mMemory) @@ -6099,13 +6105,13 @@ bool NativeCodeBasicBlock::LoadUnopStoreIndirectValue(InterCodeProcedure* proc, case IM_FPARAM: case IM_FFRAME: ram = ASMIM_ZERO_PAGE; - rareg = BC_REG_FPARAMS + rins->mSrc[0].mVarIndex + rins->mSrc[0].mIntConst; + rareg = BC_REG_FPARAMS + rins->mSrc[0].mVarIndex + int(rins->mSrc[0].mIntConst); break; default: return false; } - int windex = wins->mSrc[1].mIntConst; + int windex = int(wins->mSrc[1].mIntConst); int wareg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; switch (wins->mSrc[1].mMemory) @@ -6122,7 +6128,7 @@ bool NativeCodeBasicBlock::LoadUnopStoreIndirectValue(InterCodeProcedure* proc, case IM_FPARAM: case IM_FFRAME: wam = ASMIM_ZERO_PAGE; - wareg = BC_REG_FPARAMS + +wins->mSrc[1].mVarIndex + wins->mSrc[1].mIntConst; + wareg = BC_REG_FPARAMS + +wins->mSrc[1].mVarIndex + int(wins->mSrc[1].mIntConst); break; default: return false; @@ -6212,7 +6218,7 @@ bool NativeCodeBasicBlock::LoadOpStoreIndirectValue(InterCodeProcedure* proc, co return false; } - int rindex = rins->mSrc[0].mIntConst; + int rindex = int(rins->mSrc[0].mIntConst); int rareg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; int rstride = rins->mSrc[0].mStride; @@ -6230,13 +6236,13 @@ bool NativeCodeBasicBlock::LoadOpStoreIndirectValue(InterCodeProcedure* proc, co case IM_FPARAM: case IM_FFRAME: ram = ASMIM_ZERO_PAGE; - rareg = BC_REG_FPARAMS + rins->mSrc[0].mVarIndex + rins->mSrc[0].mIntConst; + rareg = BC_REG_FPARAMS + rins->mSrc[0].mVarIndex + int(rins->mSrc[0].mIntConst); break; default: return false; } - int windex = wins->mSrc[1].mIntConst; + int windex = int(wins->mSrc[1].mIntConst); int wareg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; int wstride = wins->mSrc[1].mStride; @@ -6254,7 +6260,7 @@ bool NativeCodeBasicBlock::LoadOpStoreIndirectValue(InterCodeProcedure* proc, co case IM_FPARAM: case IM_FFRAME: wam = ASMIM_ZERO_PAGE; - wareg = BC_REG_FPARAMS + +wins->mSrc[1].mVarIndex + wins->mSrc[1].mIntConst; + wareg = BC_REG_FPARAMS + +wins->mSrc[1].mVarIndex + int(wins->mSrc[1].mIntConst); break; default: return false; @@ -6396,7 +6402,7 @@ void NativeCodeBasicBlock::LoadValueToReg(InterCodeProcedure* proc, const InterI } else if (ins->mSrc[0].mMemory == IM_LOCAL || ins->mSrc[0].mMemory == IM_PARAM) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); int areg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[0].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[0].mVarIndex]->mOffset; @@ -6424,7 +6430,7 @@ void NativeCodeBasicBlock::LoadValueToReg(InterCodeProcedure* proc, const InterI if (ins->mSrc[0].mMemory == IM_INDIRECT) { int areg = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); int stride = ins->mSrc[0].mStride; if (stride * 4 <= 256) @@ -6510,7 +6516,7 @@ void NativeCodeBasicBlock::LoadValueToReg(InterCodeProcedure* proc, const InterI } else if (ins->mSrc[0].mMemory == IM_LOCAL || ins->mSrc[0].mMemory == IM_PARAM) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); int areg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[0].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[0].mVarIndex]->mOffset; @@ -6541,7 +6547,7 @@ void NativeCodeBasicBlock::LoadValueToReg(InterCodeProcedure* proc, const InterI if (ins->mSrc[0].mMemory == IM_INDIRECT) { int areg = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); CheckFrameIndex(ins, areg, index, 2); @@ -6592,7 +6598,7 @@ void NativeCodeBasicBlock::LoadValueToReg(InterCodeProcedure* proc, const InterI } else if (ins->mSrc[0].mMemory == IM_LOCAL || ins->mSrc[0].mMemory == IM_PARAM) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); int areg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[0].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[0].mVarIndex]->mOffset; @@ -6676,7 +6682,7 @@ void NativeCodeBasicBlock::LoadValueToReg(InterCodeProcedure* proc, const InterI } else if (ins->mSrc[0].mMemory == IM_LOCAL || ins->mSrc[0].mMemory == IM_PARAM) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); int areg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[0].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[0].mVarIndex]->mOffset; @@ -6741,7 +6747,7 @@ void NativeCodeBasicBlock::LoadValueToReg(InterCodeProcedure* proc, const InterI } else if (ins->mSrc[0].mMemory == IM_LOCAL || ins->mSrc[0].mMemory == IM_PARAM) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); int areg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[0].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[0].mVarIndex]->mOffset; @@ -6770,7 +6776,7 @@ void NativeCodeBasicBlock::LoadValueToReg(InterCodeProcedure* proc, const InterI if (ins->mSrc[0].mMemory == IM_INDIRECT) { int areg = BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp]; - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); int stride = ins->mSrc[0].mStride; int size = InterTypeSize[ins->mDst.mType]; bool accu = false; @@ -6868,7 +6874,7 @@ NativeCodeBasicBlock * NativeCodeBasicBlock::CopyValue(InterCodeProcedure* proc, { int areg = BC_REG_STACK; - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); if (ins->mSrc[1].mMemory == IM_FRAME) index += ins->mSrc[1].mVarIndex + 2; else @@ -7034,7 +7040,7 @@ NativeCodeBasicBlock * NativeCodeBasicBlock::CopyValue(InterCodeProcedure* proc, } else if (ins->mSrc[0].mMemory == IM_LOCAL || ins->mSrc[0].mMemory == IM_PARAM) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); sreg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[0].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[0].mVarIndex]->mOffset; @@ -7046,7 +7052,7 @@ NativeCodeBasicBlock * NativeCodeBasicBlock::CopyValue(InterCodeProcedure* proc, } else if (ins->mSrc[0].mIntConst != 0) { - int index = ins->mSrc[0].mIntConst; + int index = int(ins->mSrc[0].mIntConst); mIns.Push(NativeCodeInstruction(ins, ASMIT_CLC, ASMIM_IMPLIED)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp])); mIns.Push(NativeCodeInstruction(ins, ASMIT_ADC, ASMIM_IMMEDIATE, index & 0xff)); @@ -7089,7 +7095,7 @@ NativeCodeBasicBlock * NativeCodeBasicBlock::CopyValue(InterCodeProcedure* proc, } else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); dreg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; @@ -7100,7 +7106,7 @@ NativeCodeBasicBlock * NativeCodeBasicBlock::CopyValue(InterCodeProcedure* proc, } else if (ins->mSrc[1].mMemory == IM_FRAME) { - int index = ins->mSrc[1].mVarIndex + ins->mSrc[1].mIntConst + 2; + int index = ins->mSrc[1].mVarIndex + int(ins->mSrc[1].mIntConst) + 2; mIns.Push(NativeCodeInstruction(ins, ASMIT_CLC, ASMIM_IMPLIED)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_STACK)); @@ -7114,7 +7120,7 @@ NativeCodeBasicBlock * NativeCodeBasicBlock::CopyValue(InterCodeProcedure* proc, } else if (ins->mSrc[1].mIntConst != 0) { - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); mIns.Push(NativeCodeInstruction(ins, ASMIT_CLC, ASMIM_IMPLIED)); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mSrc[1].mTemp])); mIns.Push(NativeCodeInstruction(ins, ASMIT_ADC, ASMIM_IMMEDIATE, index & 0xff)); @@ -7570,7 +7576,7 @@ int NativeCodeBasicBlock::ShortMultiply(InterCodeProcedure* proc, NativeCodeProc mIns.Push(NativeCodeInstruction(ins, ASMIT_LDX, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mSrc[index].mTemp])); } - mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_MUL, mul, ins->mSrc[index].mRange.mMaxValue + 1, false))); + mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_MUL, mul, int(ins->mSrc[index].mRange.mMaxValue) + 1, false))); mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, dreg)); if (ins->mDst.IsUByte()) { @@ -7579,7 +7585,7 @@ int NativeCodeBasicBlock::ShortMultiply(InterCodeProcedure* proc, NativeCodeProc } else { - mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_MUL, mul, ins->mSrc[index].mRange.mMaxValue + 1, true))); + mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_MUL, mul, int(ins->mSrc[index].mRange.mMaxValue) + 1, true))); mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1)); } @@ -7599,7 +7605,7 @@ int NativeCodeBasicBlock::ShortMultiply(InterCodeProcedure* proc, NativeCodeProc mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1)); } else if (ins->mSrc[index].IsUByte()) - ShiftRegisterLeftFromByte(proc, ins, dreg, lshift, ins->mSrc[index].mRange.mMaxValue); + ShiftRegisterLeftFromByte(proc, ins, dreg, lshift, int(ins->mSrc[index].mRange.mMaxValue)); else ShiftRegisterLeft(proc, ins, dreg, lshift); return dreg; @@ -7637,7 +7643,7 @@ int NativeCodeBasicBlock::ShortMultiply(InterCodeProcedure* proc, NativeCodeProc mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1)); } else if (ins->mSrc[index].IsUByte()) - ShiftRegisterLeftFromByte(proc, ins, dreg, lshift, ins->mSrc[index].mRange.mMaxValue); + ShiftRegisterLeftFromByte(proc, ins, dreg, lshift, int(ins->mSrc[index].mRange.mMaxValue)); else ShiftRegisterLeft(proc, ins, dreg, lshift); return dreg; @@ -7690,7 +7696,7 @@ int NativeCodeBasicBlock::ShortMultiply(InterCodeProcedure* proc, NativeCodeProc mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, dreg + 1)); } else - ShiftRegisterLeftFromByte(proc, ins, dreg, lshift, ins->mSrc[index].mRange.mMaxValue * 5); + ShiftRegisterLeftFromByte(proc, ins, dreg, lshift, int(ins->mSrc[index].mRange.mMaxValue) * 5); } else { @@ -7958,10 +7964,10 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p if (ins->mOperator == IA_SUB && flipop) { changedSign = true; - cc.f = -ins->mSrc[sop1].mFloatConst; + cc.f = float(-ins->mSrc[sop1].mFloatConst); } else - cc.f = ins->mSrc[sop1].mFloatConst; + cc.f = float(ins->mSrc[sop1].mFloatConst); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_IMMEDIATE, cc.v & 0xff)); mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0)); @@ -8005,10 +8011,10 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p if (ins->mOperator == IA_SUB && !flipop) { changedSign = true; - cc.f = -ins->mSrc[sop0].mFloatConst; + cc.f = float(-ins->mSrc[sop0].mFloatConst); } else - cc.f = ins->mSrc[sop0].mFloatConst; + cc.f = float(ins->mSrc[sop0].mFloatConst); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_IMMEDIATE, cc.v & 0xff)); mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 0)); @@ -9206,11 +9212,11 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p if (ins->mOperator == IA_MUL && ins->mSrc[1].mTemp < 0) { - reg = ShortMultiply(proc, nproc, ins, sins0, 0, ins->mSrc[1].mIntConst); + reg = ShortMultiply(proc, nproc, ins, sins0, 0, int(ins->mSrc[1].mIntConst)); } else if (ins->mOperator == IA_MUL && ins->mSrc[0].mTemp < 0) { - reg = ShortMultiply(proc, nproc, ins, sins1, 1, ins->mSrc[0].mIntConst); + reg = ShortMultiply(proc, nproc, ins, sins1, 1, int(ins->mSrc[0].mIntConst)); } else if (ins->mOperator == IA_MUL && ins->mSrc[0].IsUByte()) { @@ -9262,7 +9268,7 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p } else if (ins->mOperator == IA_DIVS && ins->mSrc[0].mTemp < 0 && ins->mSrc[0].mIntConst == 2) { - reg = ShortSignedDivide(proc, nproc, ins, sins1, ins->mSrc[0].mIntConst); + reg = ShortSignedDivide(proc, nproc, ins, sins1, int(ins->mSrc[0].mIntConst)); } else { @@ -9504,7 +9510,7 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p int check = 0xffff; if (ins->mSrc[1].IsUByte()) - check = ins->mSrc[1].mRange.mMaxValue; + check = int(ins->mSrc[1].mRange.mMaxValue); check <<= 1; if (check >= 0x100) @@ -9542,7 +9548,7 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p } else if (ins->mSrc[1].mTemp < 0) { - int size = ins->mSrc[0].mRange.mMaxValue + 1; + int size = int(ins->mSrc[0].mRange.mMaxValue) + 1; mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp])); if (!ins->mSrc[0].IsUByte() || ins->mSrc[0].mRange.mMaxValue > 15) { @@ -9551,7 +9557,7 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p } mIns.Push(NativeCodeInstruction(ins, ASMIT_TAX, ASMIM_IMPLIED)); - mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_SHL, ins->mSrc[1].mIntConst, size, false))); + mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_SHL, int(ins->mSrc[1].mIntConst), size, false))); mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, treg)); if (ins->mDst.IsUByte()) { @@ -9560,7 +9566,7 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p } else { - mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_SHL, ins->mSrc[1].mIntConst, size, true))); + mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_SHL, int(ins->mSrc[1].mIntConst), size, true))); mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, treg + 1)); } } @@ -9784,7 +9790,7 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p } else if (ins->mSrc[1].mTemp < 0) { - int size = ins->mSrc[0].mRange.mMaxValue + 1; + int size = int(ins->mSrc[0].mRange.mMaxValue) + 1; mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp])); if (!ins->mSrc[0].IsUByte() || ins->mSrc[0].mRange.mMaxValue > 15) { @@ -9793,7 +9799,7 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p } mIns.Push(NativeCodeInstruction(ins, ASMIT_TAX, ASMIM_IMPLIED)); - mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_SHR, ins->mSrc[1].mIntConst, size, false))); + mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_SHR, int(ins->mSrc[1].mIntConst), size, false))); mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, treg)); if (ins->mDst.IsUByte()) { @@ -9802,7 +9808,7 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p } else { - mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_SHR, ins->mSrc[1].mIntConst, size, true))); + mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_SHR, int(ins->mSrc[1].mIntConst), size, true))); mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, treg + 1)); } } @@ -10060,7 +10066,7 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p } else if (ins->mSrc[1].mTemp < 0) { - int size = ins->mSrc[0].mRange.mMaxValue + 1; + int size = int(ins->mSrc[0].mRange.mMaxValue) + 1; mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[ins->mSrc[0].mTemp])); if (!ins->mSrc[0].IsUByte() || ins->mSrc[0].mRange.mMaxValue > 15) { @@ -10069,7 +10075,7 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p } mIns.Push(NativeCodeInstruction(ins, ASMIT_TAX, ASMIM_IMPLIED)); - mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_SAR, ins->mSrc[1].mIntConst, size, false))); + mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_SAR, int(ins->mSrc[1].mIntConst), size, false))); mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, treg)); if (ins->mDst.IsUByte()) { @@ -10078,7 +10084,7 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p } else { - mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_SAR, ins->mSrc[1].mIntConst, size, true))); + mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_ABSOLUTE_X, 0, nproc->mGenerator->AllocateShortMulTable(IA_SAR, int(ins->mSrc[1].mIntConst), size, true))); mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, treg + 1)); } } @@ -10160,7 +10166,7 @@ NativeCodeBasicBlock* NativeCodeBasicBlock::BinaryOperator(InterCodeProcedure* p void NativeCodeBasicBlock::SignExtendAddImmediate(InterCodeProcedure* proc, const InterInstruction* xins, const InterInstruction* ains) { - int val = ains->mSrc[0].mTemp == xins->mDst.mTemp ? ains->mSrc[1].mIntConst : ains->mSrc[0].mIntConst; + int val = ains->mSrc[0].mTemp == xins->mDst.mTemp ? int(ains->mSrc[1].mIntConst) : int(ains->mSrc[0].mIntConst); val -= 128; mIns.Push(NativeCodeInstruction(xins, ASMIT_LDA, ASMIM_ZERO_PAGE, BC_REG_TMP + proc->mTempOffset[xins->mSrc[0].mTemp] + 0)); @@ -10459,7 +10465,7 @@ void NativeCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const In } union { float f; unsigned int v; } cc; - cc.f = ins->mSrc[ci].mFloatConst; + cc.f = float(ins->mSrc[ci].mFloatConst); int ti = BC_REG_TMP + proc->mTempOffset[ins->mSrc[vi].mTemp]; @@ -10615,7 +10621,7 @@ void NativeCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const In if (ins->mSrc[li].mTemp < 0) { union { float f; unsigned int v; } cc; - cc.f = ins->mSrc[li].mFloatConst; + cc.f = float(ins->mSrc[li].mFloatConst); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_IMMEDIATE, cc.v & 0xff)); mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0)); @@ -10646,7 +10652,7 @@ void NativeCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const In if (ins->mSrc[ri].mTemp < 0) { union { float f; unsigned int v; } cc; - cc.f = ins->mSrc[ri].mFloatConst; + cc.f = float(ins->mSrc[ri].mFloatConst); mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_IMMEDIATE, cc.v & 0xff)); mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_WORK + 0)); @@ -10917,7 +10923,7 @@ void NativeCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const In if (ins->mSrc[li].mTemp < 0 && (op == IA_CMPGES || op == IA_CMPLS) && int16(ins->mSrc[li].mIntConst) > - 128) { - iconst = ins->mSrc[li].mIntConst - 1; + iconst = int(ins->mSrc[li].mIntConst) - 1; rconst = true; li = ri; ri = 1 - li; @@ -10925,7 +10931,7 @@ void NativeCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const In } else if (ins->mSrc[li].mTemp < 0 && (op == IA_CMPLES || op == IA_CMPGS) && int16(ins->mSrc[li].mIntConst) < 127) { - iconst = ins->mSrc[li].mIntConst + 1; + iconst = int(ins->mSrc[li].mIntConst) + 1; rconst = true; li = ri; ri = 1 - li; @@ -10933,7 +10939,7 @@ void NativeCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const In } else if (ins->mSrc[ri].mTemp < 0) { - iconst = ins->mSrc[ri].mIntConst; + iconst = int(ins->mSrc[ri].mIntConst); rconst = true; } @@ -10999,13 +11005,13 @@ void NativeCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const In else if (ins->mSrc[1].mTemp < 0 && ins->mSrc[1].mIntConst < 256 && ins->mSrc[1].mIntConst > 0 || ins->mSrc[0].mTemp < 0 && ins->mSrc[0].mIntConst < 256 && ins->mSrc[0].mIntConst > 0) { int rt = ins->mSrc[1].mTemp; - int ival = ins->mSrc[0].mIntConst; + int ival = int(ins->mSrc[0].mIntConst); bool u8 = ins->mSrc[1].IsUByte(); if (rt < 0) { rt = ins->mSrc[0].mTemp; u8 = ins->mSrc[0].IsUByte();; - ival = ins->mSrc[1].mIntConst; + ival = int(ins->mSrc[1].mIntConst); switch (op) { case IA_CMPLEU: @@ -11174,7 +11180,7 @@ void NativeCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const In if (ins->mSrc[ri].mTemp < 0) { - iconst = ins->mSrc[ri].mIntConst; + iconst = int(ins->mSrc[ri].mIntConst); rconst = true; } @@ -11228,7 +11234,7 @@ void NativeCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const In if (ins->mSrc[li].mTemp < 0 && (op == IA_CMPGES || op == IA_CMPLS) && int16(ins->mSrc[li].mIntConst) > - 32768) { - iconst = ins->mSrc[li].mIntConst - 1; + iconst = int(ins->mSrc[li].mIntConst) - 1; rconst = true; li = ri; ri = 1 - li; @@ -11236,7 +11242,7 @@ void NativeCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const In } else if (ins->mSrc[li].mTemp < 0 && (op == IA_CMPLES || op == IA_CMPGS) && int16(ins->mSrc[li].mIntConst) < 32767) { - iconst = ins->mSrc[li].mIntConst + 1; + iconst = int(ins->mSrc[li].mIntConst) + 1; rconst = true; li = ri; ri = 1 - li; @@ -11244,7 +11250,7 @@ void NativeCodeBasicBlock::RelationalOperator(InterCodeProcedure* proc, const In } else if (ins->mSrc[ri].mTemp < 0) { - iconst = ins->mSrc[ri].mIntConst; + iconst = int(ins->mSrc[ri].mIntConst); rconst = true; } @@ -11524,7 +11530,7 @@ void NativeCodeBasicBlock::LoadEffectiveAddress(InterCodeProcedure* proc, const else if (ins->mSrc[1].mMemory == IM_LOCAL || ins->mSrc[1].mMemory == IM_PARAM) { int dreg = BC_REG_TMP + proc->mTempOffset[ins->mDst.mTemp]; - int index = ins->mSrc[1].mIntConst; + int index = int(ins->mSrc[1].mIntConst); int areg = mNoFrame ? BC_REG_STACK : BC_REG_LOCALS; if (ins->mSrc[1].mMemory == IM_LOCAL) index += proc->mLocalVars[ins->mSrc[1].mVarIndex]->mOffset; @@ -11742,7 +11748,7 @@ void NativeCodeBasicBlock::CallAssembler(InterCodeProcedure* proc, NativeCodePro if (ins->mSrc[i].mTemp < 0) { if (ins->mSrc[i].mMemory == IM_FPARAM || ins->mSrc[i].mMemory == IM_FFRAME) - ins->mSrc[0].mLinkerObject->mTemporaries[i - 1] = BC_REG_FPARAMS + ins->mSrc[i].mVarIndex + ins->mSrc[i].mIntConst; + ins->mSrc[0].mLinkerObject->mTemporaries[i - 1] = BC_REG_FPARAMS + ins->mSrc[i].mVarIndex + int(ins->mSrc[i].mIntConst); } else ins->mSrc[0].mLinkerObject->mTemporaries[i - 1] = BC_REG_TMP + proc->mTempOffset[ins->mSrc[i].mTemp]; @@ -18544,7 +18550,7 @@ bool NativeCodeBasicBlock::JoinTailCodeSequences(NativeCodeProcedure* proc, bool if (mTrueJump && mFalseJump) { - int addr, index, taddr; + int addr, index; if (HasTailSTX(addr, index)) { if (mTrueJump->mEntryRequiredRegs[addr] && !mFalseJump->mEntryRequiredRegs[addr] && mTrueJump->mNumEntries == 1) @@ -22652,8 +22658,8 @@ bool NativeCodeBasicBlock::JoinTAXARange(int from, int to) { if (mIns[to + 1].mType == ASMIT_ORA && mIns[to + 1].mMode == ASMIM_IMMEDIATE) { - mIns[to + 0].mType = ASMIT_NOP; mIns[to + 0].mMode == ASMIM_IMPLIED; - mIns[to + 1].mType = ASMIT_NOP; mIns[to + 1].mMode == ASMIM_IMPLIED; + mIns[to + 0].mType = ASMIT_NOP; mIns[to + 0].mMode = ASMIM_IMPLIED; + mIns[to + 1].mType = ASMIT_NOP; mIns[to + 1].mMode = ASMIM_IMPLIED; mIns[to + 2].mType = ASMIT_STX; mIns.Insert(from, NativeCodeInstruction(mIns[to + 0].mIns, ASMIT_ORA, ASMIM_IMMEDIATE, mIns[to + 1].mAddress)); return true; @@ -28352,9 +28358,9 @@ bool NativeCodeBasicBlock::SimpleLoopReversal(NativeCodeProcedure* proc) if (!mExitRequiredRegs[CPU_REG_A]) { if (lb->mIns[lbs - 2].mType == ASMIT_ROR) - mIns.Push(NativeCodeInstruction(lb->mIns[lbs - 2].mIns, ASMIT_LDA, ASMIM_IMMEDIATE, 1 << (lcount - 1))); + mIns.Push(NativeCodeInstruction(lb->mIns[lbs - 2].mIns, ASMIT_LDA, ASMIM_IMMEDIATE, 1LL << (lcount - 1))); else - mIns.Push(NativeCodeInstruction(lb->mIns[lbs - 2].mIns, ASMIT_LDA, ASMIM_IMMEDIATE, 1 << (8 - lcount))); + mIns.Push(NativeCodeInstruction(lb->mIns[lbs - 2].mIns, ASMIT_LDA, ASMIM_IMMEDIATE, 1LL << (8 - lcount))); mIns.Push(NativeCodeInstruction(lb->mIns[lbs - 2].mIns, ASMIT_STA, ASMIM_ZERO_PAGE, lb->mIns[lbs - 2].mAddress)); lb->mBranch = ASMIT_BCC; @@ -28522,9 +28528,9 @@ bool NativeCodeBasicBlock::SimpleLoopReversal(NativeCodeProcedure* proc) if (!mExitRequiredRegs[CPU_REG_A]) { if (lb->mIns[lbs - 2].mType == ASMIT_ROR) - mIns.Push(NativeCodeInstruction(lb->mIns[lbs - 2].mIns, ASMIT_LDA, ASMIM_IMMEDIATE, 1 << (lcount - 1))); + mIns.Push(NativeCodeInstruction(lb->mIns[lbs - 2].mIns, ASMIT_LDA, ASMIM_IMMEDIATE, 1LL << (lcount - 1))); else - mIns.Push(NativeCodeInstruction(lb->mIns[lbs - 2].mIns, ASMIT_LDA, ASMIM_IMMEDIATE, 1 << (8 - lcount))); + mIns.Push(NativeCodeInstruction(lb->mIns[lbs - 2].mIns, ASMIT_LDA, ASMIM_IMMEDIATE, 1LL << (8 - lcount))); mIns.Push(NativeCodeInstruction(lb->mIns[lbs - 2].mIns, ASMIT_STA, ASMIM_ZERO_PAGE, lb->mIns[lbs - 3].mAddress)); lb->mBranch = ASMIT_BCC; @@ -33491,12 +33497,9 @@ bool NativeCodeBasicBlock::PeepHoleOptimizer(NativeCodeProcedure* proc, int pass mIns[i + 0].mMode == ASMIM_INDIRECT_Y && (mIns[i + 0].mFlags & NCIF_YZERO) && mIns[i + 1].mMode == ASMIM_INDIRECT_Y && mIns[i + 0].mAddress == mIns[i + 1].mAddress) { - const NativeCodeInstruction* ains, * iins; - int sreg = mIns[i + 0].mAddress; int apos, breg, ireg; - uint32 flags; if (FindAddressSumY(i, sreg, apos, breg, ireg)) { @@ -40007,7 +40010,7 @@ void NativeCodeProcedure::CompileInterBlock(InterCodeProcedure* iproc, InterCode if (ins->mSrc[0].mType == IT_FLOAT) { union { float f; unsigned int v; } cc; - cc.f = ins->mSrc[0].mFloatConst; + cc.f = float(ins->mSrc[0].mFloatConst); block->mIns.Push(NativeCodeInstruction(ins, ASMIT_LDA, ASMIM_IMMEDIATE, cc.v & 0xff)); block->mIns.Push(NativeCodeInstruction(ins, ASMIT_STA, ASMIM_ZERO_PAGE, BC_REG_ACCU + 0)); diff --git a/oscar64/NativeCodeGenerator.h b/oscar64/NativeCodeGenerator.h index 9b4f71c..d3829f0 100644 --- a/oscar64/NativeCodeGenerator.h +++ b/oscar64/NativeCodeGenerator.h @@ -112,7 +112,7 @@ class NativeCodeInstruction { public: NativeCodeInstruction(void); - NativeCodeInstruction(const InterInstruction * ins, AsmInsType type, AsmInsMode mode = ASMIM_IMPLIED, int address = 0, LinkerObject * linkerObject = nullptr, uint32 flags = NCIF_LOWER | NCIF_UPPER, int param = 0); + NativeCodeInstruction(const InterInstruction * ins, AsmInsType type, AsmInsMode mode = ASMIM_IMPLIED, int64 address = 0, LinkerObject * linkerObject = nullptr, uint32 flags = NCIF_LOWER | NCIF_UPPER, int param = 0); NativeCodeInstruction(const InterInstruction* ins, AsmInsType type, const NativeCodeInstruction & addr); AsmInsType mType; @@ -284,6 +284,7 @@ public: NativeCodeBasicBlock* BuildSingleExit(NativeCodeProcedure* proc, NativeCodeBasicBlock* block); void PutLocation(const Location& loc); + void PutOpcode(short opcode); void PutByte(uint8 code); void PutWord(uint16 code); diff --git a/oscar64/Parser.cpp b/oscar64/Parser.cpp index 12f2470..6854486 100644 --- a/oscar64/Parser.cpp +++ b/oscar64/Parser.cpp @@ -304,7 +304,7 @@ Declaration* Parser::ParseBaseTypeDeclaration(uint64 flags) mScanner->NextToken(); if (mScanner->mToken == TK_IDENT) { - int minValue = 0, maxValue = 0; + int64 minValue = 0, maxValue = 0; for (;;) { @@ -764,7 +764,7 @@ Expression* Parser::ParseInitExpression(Declaration* dtype) mErrors->Error(mScanner->mLocation, EERR_CONSTANT_INITIALIZER, "Constant index expected"); else { - index = stride * istart->mDecValue->mInteger; + index = stride * int(istart->mDecValue->mInteger); if (index >= dtype->mSize) { mErrors->Error(mScanner->mLocation, EERR_CONSTANT_INITIALIZER, "Constant initializer out of range"); @@ -778,7 +778,7 @@ Expression* Parser::ParseInitExpression(Declaration* dtype) mErrors->Error(mScanner->mLocation, EERR_CONSTANT_INITIALIZER, "Constant index expected"); else { - nrep = iend->mDecValue->mInteger - istart->mDecValue->mInteger + 1; + nrep = int(iend->mDecValue->mInteger - istart->mDecValue->mInteger + 1); if (size + nrep * dtype->mBase->mSize > dtype->mSize) { @@ -2279,11 +2279,11 @@ Expression* Parser::ParseStatement(void) { if (initExp->mRight->mDecValue->mType == DT_CONST_INTEGER && conditionExp->mRight->mDecValue->mType == DT_CONST_INTEGER) { - int startValue = initExp->mRight->mDecValue->mInteger; - int endValue = conditionExp->mRight->mDecValue->mInteger; + int startValue = int(initExp->mRight->mDecValue->mInteger); + int endValue = int(conditionExp->mRight->mDecValue->mInteger); int stepValue = 1; if (iterateExp->mType == EX_ASSIGNMENT) - stepValue = iterateExp->mRight->mDecValue->mInteger; + stepValue = int(iterateExp->mRight->mDecValue->mInteger); if (unrollPage) { @@ -3341,7 +3341,7 @@ void Parser::ParsePragma(void) ConsumeToken(TK_COMMA); Expression* exp = ParseRExpression(); if (exp->mType == EX_CONSTANT && exp->mDecValue->mType == DT_CONST_INTEGER && exp->mDecValue->mInteger >= 2 && exp->mDecValue->mInteger < 0x100) - index = exp->mDecValue->mInteger; + index = int(exp->mDecValue->mInteger); else mErrors->Error(mScanner->mLocation, EERR_PRAGMA_PARAMETER, "Integer number for start expected"); @@ -3477,7 +3477,7 @@ void Parser::ParsePragma(void) ConsumeToken(TK_OPEN_PARENTHESIS); if (mScanner->mToken == TK_INTEGER) { - mCompilationUnits->mSectionStack->mSize = mScanner->mTokenInteger; + mCompilationUnits->mSectionStack->mSize = int(mScanner->mTokenInteger); mScanner->NextToken(); } else @@ -3491,7 +3491,7 @@ void Parser::ParsePragma(void) ConsumeToken(TK_OPEN_PARENTHESIS); if (mScanner->mToken == TK_INTEGER) { - mCompilationUnits->mSectionHeap->mSize = mScanner->mTokenInteger; + mCompilationUnits->mSectionHeap->mSize = int(mScanner->mTokenInteger); mScanner->NextToken(); } else @@ -3505,20 +3505,20 @@ void Parser::ParsePragma(void) ConsumeToken(TK_OPEN_PARENTHESIS); if (mScanner->mToken == TK_INTEGER) { - int cindex = mScanner->mTokenInteger; + int cindex = int(mScanner->mTokenInteger); mScanner->NextToken(); ConsumeToken(TK_COMMA); if (mScanner->mToken == TK_INTEGER) { - int ccode = mScanner->mTokenInteger; + int ccode = int(mScanner->mTokenInteger); int ccount = 1; mScanner->NextToken(); if (ConsumeTokenIf(TK_COMMA)) { if (mScanner->mToken == TK_INTEGER) { - ccount = mScanner->mTokenInteger; + ccount = int(mScanner->mTokenInteger); mScanner->NextToken(); } else @@ -3558,7 +3558,7 @@ void Parser::ParsePragma(void) exp = ParseRExpression(); if (exp->mType == EX_CONSTANT && exp->mDecValue->mType == DT_CONST_INTEGER) - start = exp->mDecValue->mInteger; + start = int(exp->mDecValue->mInteger); else mErrors->Error(mScanner->mLocation, EERR_PRAGMA_PARAMETER, "Integer number for start expected"); @@ -3566,7 +3566,7 @@ void Parser::ParsePragma(void) exp = ParseRExpression(); if (exp->mType == EX_CONSTANT && exp->mDecValue->mType == DT_CONST_INTEGER) - end = exp->mDecValue->mInteger; + end = int(exp->mDecValue->mInteger); else mErrors->Error(mScanner->mLocation, EERR_PRAGMA_PARAMETER, "Integer number for end expected"); @@ -3576,7 +3576,7 @@ void Parser::ParsePragma(void) { exp = ParseRExpression(); if (exp->mType == EX_CONSTANT && exp->mDecValue->mType == DT_CONST_INTEGER) - flags = exp->mDecValue->mInteger; + flags = int(exp->mDecValue->mInteger); else mErrors->Error(mScanner->mLocation, EERR_PRAGMA_PARAMETER, "Integer number for flags expected"); } @@ -3649,7 +3649,7 @@ void Parser::ParsePragma(void) { exp = ParseRExpression(); if (exp->mType == EX_CONSTANT && exp->mDecValue->mType == DT_CONST_INTEGER) - rgn->mReloc = exp->mDecValue->mInteger - rgn->mStart; + rgn->mReloc = int(exp->mDecValue->mInteger - rgn->mStart); else mErrors->Error(mScanner->mLocation, EERR_PRAGMA_PARAMETER, "Integer number for bank expected"); } @@ -3677,7 +3677,7 @@ void Parser::ParsePragma(void) exp = ParseRExpression(); if (exp->mType == EX_CONSTANT && exp->mDecValue->mType == DT_CONST_INTEGER) - bank = exp->mDecValue->mInteger; + bank = int(exp->mDecValue->mInteger); else mErrors->Error(mScanner->mLocation, EERR_PRAGMA_PARAMETER, "Integer number for bank expected"); @@ -3705,7 +3705,7 @@ void Parser::ParsePragma(void) exp = ParseRExpression(); if (exp->mType == EX_CONSTANT && exp->mDecValue->mType == DT_CONST_INTEGER) - flags = exp->mDecValue->mInteger; + flags = int(exp->mDecValue->mInteger); else mErrors->Error(mScanner->mLocation, EERR_PRAGMA_PARAMETER, "Integer number for flags expected"); @@ -3856,7 +3856,7 @@ void Parser::ParsePragma(void) Expression * exp = ParseRExpression(); if (exp->mType == EX_CONSTANT && exp->mDecValue->mType == DT_CONST_INTEGER) { - dec->mAlignment = exp->mDecValue->mInteger; + dec->mAlignment = int(exp->mDecValue->mInteger); } else mErrors->Error(mScanner->mLocation, EERR_PRAGMA_PARAMETER, "Integer number for alignment expected"); @@ -3936,7 +3936,7 @@ void Parser::ParsePragma(void) if (mScanner->mToken == TK_INTEGER) { - mUnrollLoop = mScanner->mTokenInteger; + mUnrollLoop = int(mScanner->mTokenInteger); mScanner->NextToken(); } else if (mScanner->mToken == TK_IDENT && !strcmp(mScanner->mTokenIdent->mString, "full")) diff --git a/oscar64/Preprocessor.cpp b/oscar64/Preprocessor.cpp index 664333e..75bfb0e 100644 --- a/oscar64/Preprocessor.cpp +++ b/oscar64/Preprocessor.cpp @@ -455,7 +455,7 @@ void SourceFile::ReadCharPad(SourceFileDecoder decoder) { int16 d; fread(&d, 2, 1, mFile); - mMemData[i] = d; + mMemData[i] = uint8(d); } return; } @@ -525,7 +525,7 @@ void SourceFile::ReadCharPad(SourceFileDecoder decoder) { int16 d; fread(&d, 2, 1, mFile); - mMemData[i] = d; + mMemData[i] = uint8(d); } return; } diff --git a/oscar64/Scanner.cpp b/oscar64/Scanner.cpp index 90cbb4c..08da80a 100644 --- a/oscar64/Scanner.cpp +++ b/oscar64/Scanner.cpp @@ -444,7 +444,7 @@ void Scanner::NextToken(void) mPrepCondFalse = 0; NextToken(); - int v = PrepParseConditional(); + int64 v = PrepParseConditional(); if (v) { mPrepCondFalse = 0; @@ -592,7 +592,7 @@ void Scanner::NextToken(void) { mPreprocessorMode = true; NextToken(); - int v = PrepParseConditional(); + int64 v = PrepParseConditional(); if (v) mPrepCondDepth++; else @@ -611,7 +611,7 @@ void Scanner::NextToken(void) NextToken(); - int v = PrepParseConditional(); + int64 v = PrepParseConditional(); Macro* macro = mDefines->Lookup(ident); if (!macro) { @@ -619,7 +619,7 @@ void Scanner::NextToken(void) mDefines->Insert(macro); } char buffer[20]; - sprintf_s(buffer, "%d", v); + sprintf_s(buffer, "%d", int(v)); macro->SetString(buffer); mPreprocessorMode = false; if (mToken != TK_EOL) @@ -634,7 +634,7 @@ void Scanner::NextToken(void) { mPreprocessorMode = true; NextToken(); - int v = PrepParseConditional(); + int64 v = PrepParseConditional(); if (mToken != TK_EOL) mErrors->Error(mLocation, ERRR_PREPROCESSOR, "End of line expected"); @@ -659,12 +659,12 @@ void Scanner::NextToken(void) NextRawToken(); if (mToken == TK_INTEGER) { - limit = mTokenInteger; + limit = int(mTokenInteger); NextRawToken(); if (mToken == TK_INTEGER) { - skip = mTokenInteger; + skip = int(mTokenInteger); NextRawToken(); } } @@ -1791,7 +1791,7 @@ void Scanner::ParseNumberToken(void) } else { - double facc = mant, fract = 1.0; + double facc = double(mant), fract = 1.0; NextChar(); diff --git a/oscar64/Scanner.h b/oscar64/Scanner.h index 00a92c7..f6e5b44 100644 --- a/oscar64/Scanner.h +++ b/oscar64/Scanner.h @@ -220,7 +220,7 @@ public: Token mToken; double mTokenNumber; - unsigned int mTokenInteger; + int64 mTokenInteger; Location mLocation;