From b59eae3676126378ea2da1b38f20b7958012304e Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Wed, 27 Sep 2023 10:32:22 -0400 Subject: [PATCH] Adopt normative ESC decoding. 55 failures. --- InstructionSets/x86/Decoder.cpp | 18 +++++++++--------- .../Mac/Clock Signal.xcodeproj/project.pbxproj | 4 ++++ OSBindings/Mac/Clock SignalTests/8088Tests.mm | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/InstructionSets/x86/Decoder.cpp b/InstructionSets/x86/Decoder.cpp index 7218412fc..533755359 100644 --- a/InstructionSets/x86/Decoder.cpp +++ b/InstructionSets/x86/Decoder.cpp @@ -402,14 +402,14 @@ std::pair::InstructionT> Decoder::decode(con // Unused: 0xd6. case 0xd7: Complete(XLAT, None, None, DataSize::Byte); break; - case 0xd8: MemRegReg(ESC, MemReg_Reg, DataSize::None); break; - case 0xd9: MemRegReg(ESC, MemReg_Reg, DataSize::None); break; - case 0xda: MemRegReg(ESC, MemReg_Reg, DataSize::None); break; - case 0xdb: MemRegReg(ESC, MemReg_Reg, DataSize::None); break; - case 0xdc: MemRegReg(ESC, MemReg_Reg, DataSize::None); break; - case 0xdd: MemRegReg(ESC, MemReg_Reg, DataSize::None); break; - case 0xde: MemRegReg(ESC, MemReg_Reg, DataSize::None); break; - case 0xdf: MemRegReg(ESC, MemReg_Reg, DataSize::None); break; + case 0xd8: MemRegReg(ESC, Reg_MemReg, data_size_); break; + case 0xd9: MemRegReg(ESC, Reg_MemReg, data_size_); break; + case 0xda: MemRegReg(ESC, Reg_MemReg, data_size_); break; + case 0xdb: MemRegReg(ESC, Reg_MemReg, data_size_); break; + case 0xdc: MemRegReg(ESC, Reg_MemReg, data_size_); break; + case 0xdd: MemRegReg(ESC, Reg_MemReg, data_size_); break; + case 0xde: MemRegReg(ESC, Reg_MemReg, data_size_); break; + case 0xdf: MemRegReg(ESC, Reg_MemReg, data_size_); break; case 0xe0: Displacement(LOOPNE, DataSize::Byte); break; case 0xe1: Displacement(LOOPE, DataSize::Byte); break; @@ -660,7 +660,7 @@ std::pair::InstructionT> Decoder::decode(con }; displacement_size_ = sizes[mod]; - if(address_size_ == AddressSize::b32) { + if(is_32bit(model) && address_size_ == AddressSize::b32) { // 32-bit decoding: the range of potential indirections is expanded, // and may segue into obtaining a SIB. sib_ = ScaleIndexBase(0, Source::None, reg_table[rm]); diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj index 9f48fee2e..352f0ad27 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj +++ b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj @@ -27,6 +27,7 @@ 42A5E8522ABBE16F00A0DD5D /* nop_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8412ABBE16F00A0DD5D /* nop_test.bin */; }; 42A5E8532ABBE16F00A0DD5D /* lax_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8422ABBE16F00A0DD5D /* lax_test.bin */; }; 42A5E8542ABBE16F00A0DD5D /* branch_backwards_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 42A5E8432ABBE16F00A0DD5D /* branch_backwards_test.bin */; }; + 42E5C3932AC46A7700DA093D /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42E5C3922AC46A7700DA093D /* Carbon.framework */; }; 4B018B89211930DE002A3937 /* 65C02_extended_opcodes_test.bin in Resources */ = {isa = PBXBuildFile; fileRef = 4B018B88211930DE002A3937 /* 65C02_extended_opcodes_test.bin */; }; 4B01A6881F22F0DB001FD6E3 /* Z80MemptrTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B01A6871F22F0DB001FD6E3 /* Z80MemptrTests.swift */; }; 4B0333AF2094081A0050B93D /* AppleDSK.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B0333AD2094081A0050B93D /* AppleDSK.cpp */; }; @@ -1148,6 +1149,7 @@ 42AD552E2A0C4D5000ACE410 /* 68000.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = 68000.hpp; sourceTree = ""; }; 42AD55302A0C4D5000ACE410 /* 68000Storage.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = 68000Storage.hpp; sourceTree = ""; }; 42AD55312A0C4D5000ACE410 /* 68000Implementation.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = 68000Implementation.hpp; sourceTree = ""; }; + 42E5C3922AC46A7700DA093D /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; 4B018B88211930DE002A3937 /* 65C02_extended_opcodes_test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; name = 65C02_extended_opcodes_test.bin; path = "Klaus Dormann/65C02_extended_opcodes_test.bin"; sourceTree = ""; }; 4B01A6871F22F0DB001FD6E3 /* Z80MemptrTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Z80MemptrTests.swift; sourceTree = ""; }; 4B0333AD2094081A0050B93D /* AppleDSK.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = AppleDSK.cpp; sourceTree = ""; }; @@ -2302,6 +2304,7 @@ buildActionMask = 2147483647; files = ( 4BB8617124E22F5700A00E03 /* Accelerate.framework in Frameworks */, + 42E5C3932AC46A7700DA093D /* Carbon.framework in Frameworks */, 4B50AF80242817F40099BBD7 /* QuartzCore.framework in Frameworks */, 4B69FB461C4D950F00B5F0AA /* libz.tbd in Frameworks */, ); @@ -2391,6 +2394,7 @@ 4B055A761FAE78210060FFFF /* Frameworks */ = { isa = PBXGroup; children = ( + 42E5C3922AC46A7700DA093D /* Carbon.framework */, 4BB8617024E22F4900A00E03 /* Accelerate.framework */, 4B50AF7F242817F40099BBD7 /* QuartzCore.framework */, 4B055AF01FAE9C080060FFFF /* OpenGL.framework */, diff --git a/OSBindings/Mac/Clock SignalTests/8088Tests.mm b/OSBindings/Mac/Clock SignalTests/8088Tests.mm index e4ac987ff..4e74fb959 100644 --- a/OSBindings/Mac/Clock SignalTests/8088Tests.mm +++ b/OSBindings/Mac/Clock SignalTests/8088Tests.mm @@ -130,7 +130,7 @@ std::string to_string(InstructionSet::x86::DataPointer pointer, const Instructio NSString *path = [NSString stringWithUTF8String:TestSuiteHome]; NSSet *allowList = nil; // [[NSSet alloc] initWithArray:@[ -// @"08.json.gz", +// @"DB.json.gz", // ]]; // Unofficial opcodes; ignored for now.