absolute jump

This commit is contained in:
2024-11-26 17:14:22 +01:00
parent 9738ba1afd
commit eb6cde02a7
2 changed files with 2 additions and 10 deletions

View File

@@ -79,17 +79,11 @@ std::uint32_t Assembleur::ParseOperationImmediate(
}
std::uint32_t Assembleur::ParseJump(Instruction a_Instruction, const std::string& a_Label) {
std::int32_t jump = ParseLabel(a_Label) - a_Instruction.m_Line;
if (jump < 0)
jump = std::abs(jump) & 0x7FFFFFF | 0x4000000;
return IToInt(a_Instruction) | jump;
return IToInt(a_Instruction) | ParseLabel(a_Label);
}
std::uint32_t Assembleur::ParseJump(Instruction a_Instruction, std::uint8_t a_R1, std::uint8_t a_R2, const std::string& a_Label) {
std::int32_t jump = ParseLabel(a_Label) - a_Instruction.m_Line;
if (jump < 0)
jump = std::abs(jump) & 0xFFFFF | 0x100000;
return IToInt(a_Instruction) | a_R1 << 24 | a_R2 << 21 | jump;
return IToInt(a_Instruction) | a_R1 << 24 | a_R2 << 21 | ParseLabel(a_Label);
}
std::uint32_t Assembleur::ParseJump(Instruction a_Instruction) {
@@ -134,7 +128,6 @@ std::uint32_t Assembleur::ParseInstruction(const std::string& a_Str, std::uint32
}
Instruction instruction = it->second;
instruction.m_Line = a_Line;
try {
switch (instruction.m_Instruction) {

View File

@@ -13,7 +13,6 @@ enum TypeInstruction : std::uint8_t {
struct Instruction {
TypeInstruction m_Instruction;
std::uint8_t m_SubInstruction;
std::uint32_t m_Line;
};
class Assembleur {