separate JIT code, macOS and others

This commit is contained in:
kanjitalk755 2017-12-04 20:38:21 +09:00
parent 42353c9698
commit 6eaa8cb232
7 changed files with 13214 additions and 396 deletions

View File

@ -8,10 +8,8 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
08003F8C1E0624D100A3ADAB /* basic-dyngen-ops-x86_32.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 08003F851E0624D100A3ADAB /* basic-dyngen-ops-x86_32.hpp */; }; 08003F8C1E0624D100A3ADAB /* basic-dyngen-ops-x86_32.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 08003F851E0624D100A3ADAB /* basic-dyngen-ops-x86_32.hpp */; };
08003F8D1E0624D100A3ADAB /* basic-dyngen-ops-x86_64.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 08003F861E0624D100A3ADAB /* basic-dyngen-ops-x86_64.hpp */; };
08003F8E1E0624D100A3ADAB /* basic-dyngen-ops.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 08003F871E0624D100A3ADAB /* basic-dyngen-ops.hpp */; }; 08003F8E1E0624D100A3ADAB /* basic-dyngen-ops.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 08003F871E0624D100A3ADAB /* basic-dyngen-ops.hpp */; };
08003F8F1E0624D100A3ADAB /* ppc-dyngen-ops-x86_32.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 08003F881E0624D100A3ADAB /* ppc-dyngen-ops-x86_32.hpp */; }; 08003F8F1E0624D100A3ADAB /* ppc-dyngen-ops-x86_32.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 08003F881E0624D100A3ADAB /* ppc-dyngen-ops-x86_32.hpp */; };
08003F901E0624D100A3ADAB /* ppc-dyngen-ops-x86_64.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 08003F891E0624D100A3ADAB /* ppc-dyngen-ops-x86_64.hpp */; };
08003F911E0624D100A3ADAB /* ppc-dyngen-ops.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 08003F8A1E0624D100A3ADAB /* ppc-dyngen-ops.hpp */; }; 08003F911E0624D100A3ADAB /* ppc-dyngen-ops.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 08003F8A1E0624D100A3ADAB /* ppc-dyngen-ops.hpp */; };
08163339158C121000C449F9 /* dis-asm.h in Headers */ = {isa = PBXBuildFile; fileRef = 08163337158C121000C449F9 /* dis-asm.h */; }; 08163339158C121000C449F9 /* dis-asm.h in Headers */ = {isa = PBXBuildFile; fileRef = 08163337158C121000C449F9 /* dis-asm.h */; };
08163340158C125800C449F9 /* ppc-dis.c in Sources */ = {isa = PBXBuildFile; fileRef = 08163338158C121000C449F9 /* ppc-dis.c */; }; 08163340158C125800C449F9 /* ppc-dis.c in Sources */ = {isa = PBXBuildFile; fileRef = 08163338158C121000C449F9 /* ppc-dis.c */; };
@ -106,6 +104,8 @@
08E877521E0640E800A90A2C /* clip_macosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CE2C14A99EF0000B1711 /* clip_macosx.cpp */; }; 08E877521E0640E800A90A2C /* clip_macosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0856CE2C14A99EF0000B1711 /* clip_macosx.cpp */; };
A7B1921418C35D4700791D8D /* DiskType.m in Sources */ = {isa = PBXBuildFile; fileRef = A7B1921318C35D4700791D8D /* DiskType.m */; }; A7B1921418C35D4700791D8D /* DiskType.m in Sources */ = {isa = PBXBuildFile; fileRef = A7B1921318C35D4700791D8D /* DiskType.m */; };
E4302EE31FBFE7FA00A5B500 /* lowmem.c in Sources */ = {isa = PBXBuildFile; fileRef = E4302EE21FBFE7FA00A5B500 /* lowmem.c */; }; E4302EE31FBFE7FA00A5B500 /* lowmem.c in Sources */ = {isa = PBXBuildFile; fileRef = E4302EE21FBFE7FA00A5B500 /* lowmem.c */; };
E4C9A03E1FD55CDC00CABBF9 /* basic-dyngen-ops-x86_64_macos.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E4C9A03D1FD55CDC00CABBF9 /* basic-dyngen-ops-x86_64_macos.hpp */; };
E4C9A0401FD55CE700CABBF9 /* ppc-dyngen-ops-x86_64_macos.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E4C9A03F1FD55CE700CABBF9 /* ppc-dyngen-ops-x86_64_macos.hpp */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
@ -141,10 +141,8 @@
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
08003F851E0624D100A3ADAB /* basic-dyngen-ops-x86_32.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = "basic-dyngen-ops-x86_32.hpp"; path = "dyngen_precompiled/basic-dyngen-ops-x86_32.hpp"; sourceTree = "<group>"; }; 08003F851E0624D100A3ADAB /* basic-dyngen-ops-x86_32.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = "basic-dyngen-ops-x86_32.hpp"; path = "dyngen_precompiled/basic-dyngen-ops-x86_32.hpp"; sourceTree = "<group>"; };
08003F861E0624D100A3ADAB /* basic-dyngen-ops-x86_64.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = "basic-dyngen-ops-x86_64.hpp"; path = "dyngen_precompiled/basic-dyngen-ops-x86_64.hpp"; sourceTree = "<group>"; };
08003F871E0624D100A3ADAB /* basic-dyngen-ops.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = "basic-dyngen-ops.hpp"; path = "dyngen_precompiled/basic-dyngen-ops.hpp"; sourceTree = "<group>"; }; 08003F871E0624D100A3ADAB /* basic-dyngen-ops.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = "basic-dyngen-ops.hpp"; path = "dyngen_precompiled/basic-dyngen-ops.hpp"; sourceTree = "<group>"; };
08003F881E0624D100A3ADAB /* ppc-dyngen-ops-x86_32.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = "ppc-dyngen-ops-x86_32.hpp"; path = "dyngen_precompiled/ppc-dyngen-ops-x86_32.hpp"; sourceTree = "<group>"; }; 08003F881E0624D100A3ADAB /* ppc-dyngen-ops-x86_32.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = "ppc-dyngen-ops-x86_32.hpp"; path = "dyngen_precompiled/ppc-dyngen-ops-x86_32.hpp"; sourceTree = "<group>"; };
08003F891E0624D100A3ADAB /* ppc-dyngen-ops-x86_64.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = "ppc-dyngen-ops-x86_64.hpp"; path = "dyngen_precompiled/ppc-dyngen-ops-x86_64.hpp"; sourceTree = "<group>"; };
08003F8A1E0624D100A3ADAB /* ppc-dyngen-ops.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = "ppc-dyngen-ops.hpp"; path = "dyngen_precompiled/ppc-dyngen-ops.hpp"; sourceTree = "<group>"; }; 08003F8A1E0624D100A3ADAB /* ppc-dyngen-ops.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = "ppc-dyngen-ops.hpp"; path = "dyngen_precompiled/ppc-dyngen-ops.hpp"; sourceTree = "<group>"; };
08003F8B1E0624D100A3ADAB /* ppc-execute-impl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppc-execute-impl.cpp"; path = "dyngen_precompiled/ppc-execute-impl.cpp"; sourceTree = "<group>"; }; 08003F8B1E0624D100A3ADAB /* ppc-execute-impl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppc-execute-impl.cpp"; path = "dyngen_precompiled/ppc-execute-impl.cpp"; sourceTree = "<group>"; };
08163337158C121000C449F9 /* dis-asm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "dis-asm.h"; sourceTree = "<group>"; }; 08163337158C121000C449F9 /* dis-asm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "dis-asm.h"; sourceTree = "<group>"; };
@ -379,6 +377,8 @@
A7B1921218C35D4700791D8D /* DiskType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskType.h; sourceTree = "<group>"; }; A7B1921218C35D4700791D8D /* DiskType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DiskType.h; sourceTree = "<group>"; };
A7B1921318C35D4700791D8D /* DiskType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DiskType.m; sourceTree = "<group>"; }; A7B1921318C35D4700791D8D /* DiskType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DiskType.m; sourceTree = "<group>"; };
E4302EE21FBFE7FA00A5B500 /* lowmem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lowmem.c; path = Darwin/lowmem.c; sourceTree = "<group>"; }; E4302EE21FBFE7FA00A5B500 /* lowmem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lowmem.c; path = Darwin/lowmem.c; sourceTree = "<group>"; };
E4C9A03D1FD55CDC00CABBF9 /* basic-dyngen-ops-x86_64_macos.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = "basic-dyngen-ops-x86_64_macos.hpp"; path = "dyngen_precompiled/basic-dyngen-ops-x86_64_macos.hpp"; sourceTree = "<group>"; };
E4C9A03F1FD55CE700CABBF9 /* ppc-dyngen-ops-x86_64_macos.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = "ppc-dyngen-ops-x86_64_macos.hpp"; path = "dyngen_precompiled/ppc-dyngen-ops-x86_64_macos.hpp"; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@ -414,10 +414,10 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
08003F851E0624D100A3ADAB /* basic-dyngen-ops-x86_32.hpp */, 08003F851E0624D100A3ADAB /* basic-dyngen-ops-x86_32.hpp */,
08003F861E0624D100A3ADAB /* basic-dyngen-ops-x86_64.hpp */, E4C9A03D1FD55CDC00CABBF9 /* basic-dyngen-ops-x86_64_macos.hpp */,
08003F871E0624D100A3ADAB /* basic-dyngen-ops.hpp */, 08003F871E0624D100A3ADAB /* basic-dyngen-ops.hpp */,
08003F881E0624D100A3ADAB /* ppc-dyngen-ops-x86_32.hpp */, 08003F881E0624D100A3ADAB /* ppc-dyngen-ops-x86_32.hpp */,
08003F891E0624D100A3ADAB /* ppc-dyngen-ops-x86_64.hpp */, E4C9A03F1FD55CE700CABBF9 /* ppc-dyngen-ops-x86_64_macos.hpp */,
08003F8A1E0624D100A3ADAB /* ppc-dyngen-ops.hpp */, 08003F8A1E0624D100A3ADAB /* ppc-dyngen-ops.hpp */,
08003F8B1E0624D100A3ADAB /* ppc-execute-impl.cpp */, 08003F8B1E0624D100A3ADAB /* ppc-execute-impl.cpp */,
); );
@ -885,9 +885,9 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
08003F8F1E0624D100A3ADAB /* ppc-dyngen-ops-x86_32.hpp in Headers */, 08003F8F1E0624D100A3ADAB /* ppc-dyngen-ops-x86_32.hpp in Headers */,
08003F901E0624D100A3ADAB /* ppc-dyngen-ops-x86_64.hpp in Headers */,
08003F8D1E0624D100A3ADAB /* basic-dyngen-ops-x86_64.hpp in Headers */,
08003F8E1E0624D100A3ADAB /* basic-dyngen-ops.hpp in Headers */, 08003F8E1E0624D100A3ADAB /* basic-dyngen-ops.hpp in Headers */,
E4C9A03E1FD55CDC00CABBF9 /* basic-dyngen-ops-x86_64_macos.hpp in Headers */,
E4C9A0401FD55CE700CABBF9 /* ppc-dyngen-ops-x86_64_macos.hpp in Headers */,
08163339158C121000C449F9 /* dis-asm.h in Headers */, 08163339158C121000C449F9 /* dis-asm.h in Headers */,
08003F8C1E0624D100A3ADAB /* basic-dyngen-ops-x86_32.hpp in Headers */, 08003F8C1E0624D100A3ADAB /* basic-dyngen-ops-x86_32.hpp in Headers */,
08003F911E0624D100A3ADAB /* ppc-dyngen-ops.hpp in Headers */, 08003F911E0624D100A3ADAB /* ppc-dyngen-ops.hpp in Headers */,

View File

@ -1,30 +1,3 @@
#define ADD_RAX_RCX 0x01,0xc8
#define ADD_RDX_RCX 0x01,0xca
#define ADD_RAX_RDX 0x01,0xd0
#define TRANS_RAX \
0x48,0x3D,0x00,0x30,0x00,0x00,\
0x72,0x16,\
0x48,0x3D,0x00,0xE0,0xFF,0x5F,\
0x72,0x14,\
0x48,0x25,0xFF,0x1F,0x00,0x00,\
0x48,0x05,0x00,0x00,0x00,0x00,\
0xEB,0x06,\
0x48,0x05,0x00,0x00,0x00,0x00
#define TRANS_RDX \
0x48,0x81,0xFA,0x00,0x30,0x00,0x00,\
0x72,0x19,\
0x48,0x81,0xFA,0x00,0xE0,0xFF,0x5F,\
0x72,0x17,\
0x48,0x81,0xE2,0xFF,0x1F,0x00,0x00,\
0x48,0x81,0xC2,0x00,0x00,0x00,0x00,\
0xEB,0x07,\
0x48,0x81,0xC2,0x00,0x00,0x00,0x00
#ifdef DYNGEN_IMPL
extern uint8 gZeroPage[0x3000], gKernelData[0x2000];
#endif
#ifndef DEFINE_CST #ifndef DEFINE_CST
#define DEFINE_CST(NAME, VALUE) #define DEFINE_CST(NAME, VALUE)
#endif #endif
@ -1351,14 +1324,10 @@ DEFINE_GEN(gen_op_load_u8_T0_T1_0,void,(void))
#define HAVE_gen_op_load_u8_T0_T1_0 #define HAVE_gen_op_load_u8_T0_T1_0
{ {
static const uint8 op_load_u8_T0_T1_0_code[] = { static const uint8 op_load_u8_T0_T1_0_code[] = {
0x44, 0x89, 0xe8, 0x44, 0x89, 0xe8, 0x44, 0x0f, 0xb6, 0x20
TRANS_RAX,
0x44, 0x0f, 0xb6, 0x20,
}; };
copy_block(op_load_u8_T0_T1_0_code, 43); copy_block(op_load_u8_T0_T1_0_code, 7);
*(uint32_t *)(code_ptr() + 27) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(7);
*(uint32_t *)(code_ptr() + 35) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(43);
} }
#endif #endif
@ -1367,14 +1336,10 @@ DEFINE_GEN(gen_op_store_8_T0_T1_0,void,(void))
#define HAVE_gen_op_store_8_T0_T1_0 #define HAVE_gen_op_store_8_T0_T1_0
{ {
static const uint8 op_store_8_T0_T1_0_code[] = { static const uint8 op_store_8_T0_T1_0_code[] = {
0x44, 0x89, 0xe8, 0x44, 0x89, 0xe8, 0x44, 0x88, 0x20
TRANS_RAX,
0x44, 0x88, 0x20,
}; };
copy_block(op_store_8_T0_T1_0_code, 42); copy_block(op_store_8_T0_T1_0_code, 6);
*(uint32_t *)(code_ptr() + 27) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(6);
*(uint32_t *)(code_ptr() + 35) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(42);
} }
#endif #endif
@ -1383,15 +1348,11 @@ DEFINE_GEN(gen_op_load_s16_T0_T1_0,void,(void))
#define HAVE_gen_op_load_s16_T0_T1_0 #define HAVE_gen_op_load_s16_T0_T1_0
{ {
static const uint8 op_load_s16_T0_T1_0_code[] = { static const uint8 op_load_s16_T0_T1_0_code[] = {
0x44, 0x89, 0xe8, 0x44, 0x89, 0xe8, 0x0f, 0xb7, 0x00, 0x66, 0xc1, 0xc0, 0x08, 0x44, 0x0f,
TRANS_RAX, 0xbf, 0xe0
0x0f, 0xb7, 0x00,
0x66, 0xc1, 0xc0, 0x08, 0x44, 0x0f, 0xbf, 0xe0
}; };
copy_block(op_load_s16_T0_T1_0_code, 50); copy_block(op_load_s16_T0_T1_0_code, 14);
*(uint32_t *)(code_ptr() + 27) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(14);
*(uint32_t *)(code_ptr() + 35) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(50);
} }
#endif #endif
@ -1400,15 +1361,10 @@ DEFINE_GEN(gen_op_load_s32_T0_T1_0,void,(void))
#define HAVE_gen_op_load_s32_T0_T1_0 #define HAVE_gen_op_load_s32_T0_T1_0
{ {
static const uint8 op_load_s32_T0_T1_0_code[] = { static const uint8 op_load_s32_T0_T1_0_code[] = {
0x44, 0x89, 0xe8, 0x44, 0x89, 0xe8, 0x8b, 0x00, 0x41, 0x89, 0xc4, 0x41, 0x0f, 0xcc
TRANS_RAX,
0x8b, 0x00,
0x41, 0x89, 0xc4, 0x41, 0x0f, 0xcc
}; };
copy_block(op_load_s32_T0_T1_0_code, 47); copy_block(op_load_s32_T0_T1_0_code, 11);
*(uint32_t *)(code_ptr() + 27) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(11);
*(uint32_t *)(code_ptr() + 35) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(47);
} }
#endif #endif
@ -1443,15 +1399,11 @@ DEFINE_GEN(gen_op_load_u16_T0_T1_0,void,(void))
#define HAVE_gen_op_load_u16_T0_T1_0 #define HAVE_gen_op_load_u16_T0_T1_0
{ {
static const uint8 op_load_u16_T0_T1_0_code[] = { static const uint8 op_load_u16_T0_T1_0_code[] = {
0x44, 0x89, 0xe8, 0x44, 0x89, 0xe8, 0x0f, 0xb7, 0x00, 0x66, 0xc1, 0xc0, 0x08, 0x44, 0x0f,
TRANS_RAX, 0xb7, 0xe0
0x0f, 0xb7, 0x00,
0x66, 0xc1, 0xc0, 0x08, 0x44, 0x0f, 0xb7, 0xe0
}; };
copy_block(op_load_u16_T0_T1_0_code, 50); copy_block(op_load_u16_T0_T1_0_code, 14);
*(uint32_t *)(code_ptr() + 27) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(14);
*(uint32_t *)(code_ptr() + 35) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(50);
} }
#endif #endif
@ -1460,15 +1412,10 @@ DEFINE_GEN(gen_op_load_u32_T0_T1_0,void,(void))
#define HAVE_gen_op_load_u32_T0_T1_0 #define HAVE_gen_op_load_u32_T0_T1_0
{ {
static const uint8 op_load_u32_T0_T1_0_code[] = { static const uint8 op_load_u32_T0_T1_0_code[] = {
0x44, 0x89, 0xe8, 0x44, 0x89, 0xe8, 0x8b, 0x00, 0x41, 0x89, 0xc4, 0x41, 0x0f, 0xcc
TRANS_RAX,
0x8b, 0x00,
0x41, 0x89, 0xc4, 0x41, 0x0f, 0xcc
}; };
copy_block(op_load_u32_T0_T1_0_code, 47); copy_block(op_load_u32_T0_T1_0_code, 11);
*(uint32_t *)(code_ptr() + 27) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(11);
*(uint32_t *)(code_ptr() + 35) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(47);
} }
#endif #endif
@ -1477,14 +1424,10 @@ DEFINE_GEN(gen_op_load_u8_T0_T1_T2,void,(void))
#define HAVE_gen_op_load_u8_T0_T1_T2 #define HAVE_gen_op_load_u8_T0_T1_T2
{ {
static const uint8 op_load_u8_T0_T1_T2_code[] = { static const uint8 op_load_u8_T0_T1_T2_code[] = {
0x43, 0x8d, 0x04, 0x2e, 0x43, 0x8d, 0x04, 0x2e, 0x44, 0x0f, 0xb6, 0x20
TRANS_RAX,
0x44, 0x0f, 0xb6, 0x20,
}; };
copy_block(op_load_u8_T0_T1_T2_code, 44); copy_block(op_load_u8_T0_T1_T2_code, 8);
*(uint32_t *)(code_ptr() + 28) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(8);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(44);
} }
#endif #endif
@ -1493,16 +1436,12 @@ DEFINE_GEN(gen_op_load_u8_T0_T1_im,void,(long param1))
#define HAVE_gen_op_load_u8_T0_T1_im #define HAVE_gen_op_load_u8_T0_T1_im
{ {
static const uint8 op_load_u8_T0_T1_im_code[] = { static const uint8 op_load_u8_T0_T1_im_code[] = {
0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x44, 0x0f,
ADD_RAX_RDX, 0xb6, 0x24, 0x02
TRANS_RAX,
0x44, 0x0f, 0xb6, 0x20,
}; };
copy_block(op_load_u8_T0_T1_im_code, 52); copy_block(op_load_u8_T0_T1_im_code, 15);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 44) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0; *(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0;
inc_code_ptr(52); inc_code_ptr(15);
} }
#endif #endif
@ -1511,14 +1450,11 @@ DEFINE_GEN(gen_op_store_16_T0_T1_0,void,(void))
#define HAVE_gen_op_store_16_T0_T1_0 #define HAVE_gen_op_store_16_T0_T1_0
{ {
static const uint8 op_store_16_T0_T1_0_code[] = { static const uint8 op_store_16_T0_T1_0_code[] = {
0x44, 0x89, 0xea, 0x44, 0x89, 0xe0, 0x66, 0xc1, 0xc0, 0x08, 0x44, 0x89, 0xea, 0x44, 0x89, 0xe0, 0x66, 0xc1, 0xc0, 0x08, 0x66, 0x89,
TRANS_RDX, 0x02
0x66, 0x89, 0x02,
}; };
copy_block(op_store_16_T0_T1_0_code, 54); copy_block(op_store_16_T0_T1_0_code, 13);
*(uint32_t *)(code_ptr() + 38) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(13);
*(uint32_t *)(code_ptr() + 47) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(54);
} }
#endif #endif
@ -1527,14 +1463,10 @@ DEFINE_GEN(gen_op_store_32_T0_T1_0,void,(void))
#define HAVE_gen_op_store_32_T0_T1_0 #define HAVE_gen_op_store_32_T0_T1_0
{ {
static const uint8 op_store_32_T0_T1_0_code[] = { static const uint8 op_store_32_T0_T1_0_code[] = {
0x44, 0x89, 0xe2, 0x0f, 0xca, 0x44, 0x89, 0xe8, 0x44, 0x89, 0xe2, 0x0f, 0xca, 0x44, 0x89, 0xe8, 0x89, 0x10
TRANS_RAX,
0x89, 0x10,
}; };
copy_block(op_store_32_T0_T1_0_code, 46); copy_block(op_store_32_T0_T1_0_code, 10);
*(uint32_t *)(code_ptr() + 32) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(10);
*(uint32_t *)(code_ptr() + 40) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(46);
} }
#endif #endif
@ -1543,14 +1475,10 @@ DEFINE_GEN(gen_op_store_8_T0_T1_T2,void,(void))
#define HAVE_gen_op_store_8_T0_T1_T2 #define HAVE_gen_op_store_8_T0_T1_T2
{ {
static const uint8 op_store_8_T0_T1_T2_code[] = { static const uint8 op_store_8_T0_T1_T2_code[] = {
0x43, 0x8d, 0x04, 0x2e, 0x43, 0x8d, 0x04, 0x2e, 0x44, 0x88, 0x20
TRANS_RAX,
0x44, 0x88, 0x20,
}; };
copy_block(op_store_8_T0_T1_T2_code, 43); copy_block(op_store_8_T0_T1_T2_code, 7);
*(uint32_t *)(code_ptr() + 28) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(7);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(43);
} }
#endif #endif
@ -1559,16 +1487,12 @@ DEFINE_GEN(gen_op_store_8_T0_T1_im,void,(long param1))
#define HAVE_gen_op_store_8_T0_T1_im #define HAVE_gen_op_store_8_T0_T1_im
{ {
static const uint8 op_store_8_T0_T1_im_code[] = { static const uint8 op_store_8_T0_T1_im_code[] = {
0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x44, 0x88,
ADD_RAX_RDX, 0x24, 0x02
TRANS_RAX,
0x44, 0x88, 0x20,
}; };
copy_block(op_store_8_T0_T1_im_code, 51); copy_block(op_store_8_T0_T1_im_code, 14);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 44) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0; *(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0;
inc_code_ptr(51); inc_code_ptr(14);
} }
#endif #endif
@ -1577,15 +1501,11 @@ DEFINE_GEN(gen_op_load_s16_T0_T1_T2,void,(void))
#define HAVE_gen_op_load_s16_T0_T1_T2 #define HAVE_gen_op_load_s16_T0_T1_T2
{ {
static const uint8 op_load_s16_T0_T1_T2_code[] = { static const uint8 op_load_s16_T0_T1_T2_code[] = {
0x43, 0x8d, 0x04, 0x2e, 0x43, 0x8d, 0x04, 0x2e, 0x0f, 0xb7, 0x00, 0x66, 0xc1, 0xc0, 0x08, 0x44,
TRANS_RAX, 0x0f, 0xbf, 0xe0
0x0f, 0xb7, 0x00,
0x66, 0xc1, 0xc0, 0x08, 0x44, 0x0f, 0xbf, 0xe0
}; };
copy_block(op_load_s16_T0_T1_T2_code, 51); copy_block(op_load_s16_T0_T1_T2_code, 15);
*(uint32_t *)(code_ptr() + 28) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(15);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(51);
} }
#endif #endif
@ -1594,17 +1514,12 @@ DEFINE_GEN(gen_op_load_s16_T0_T1_im,void,(long param1))
#define HAVE_gen_op_load_s16_T0_T1_im #define HAVE_gen_op_load_s16_T0_T1_im
{ {
static const uint8 op_load_s16_T0_T1_im_code[] = { static const uint8 op_load_s16_T0_T1_im_code[] = {
0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xb7,
ADD_RAX_RDX, 0x04, 0x02, 0x66, 0xc1, 0xc0, 0x08, 0x44, 0x0f, 0xbf, 0xe0
TRANS_RAX,
0x0f, 0xb7, 0x00,
0x66, 0xc1, 0xc0, 0x08, 0x44, 0x0f, 0xbf, 0xe0
}; };
copy_block(op_load_s16_T0_T1_im_code, 59); copy_block(op_load_s16_T0_T1_im_code, 22);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 44) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0; *(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0;
inc_code_ptr(59); inc_code_ptr(22);
} }
#endif #endif
@ -1613,15 +1528,10 @@ DEFINE_GEN(gen_op_load_s32_T0_T1_T2,void,(void))
#define HAVE_gen_op_load_s32_T0_T1_T2 #define HAVE_gen_op_load_s32_T0_T1_T2
{ {
static const uint8 op_load_s32_T0_T1_T2_code[] = { static const uint8 op_load_s32_T0_T1_T2_code[] = {
0x43, 0x8d, 0x04, 0x2e, 0x43, 0x8d, 0x04, 0x2e, 0x8b, 0x00, 0x41, 0x89, 0xc4, 0x41, 0x0f, 0xcc
TRANS_RAX,
0x8b, 0x00,
0x41, 0x89, 0xc4, 0x41, 0x0f, 0xcc
}; };
copy_block(op_load_s32_T0_T1_T2_code, 48); copy_block(op_load_s32_T0_T1_T2_code, 12);
*(uint32_t *)(code_ptr() + 28) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(12);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(48);
} }
#endif #endif
@ -1630,17 +1540,12 @@ DEFINE_GEN(gen_op_load_s32_T0_T1_im,void,(long param1))
#define HAVE_gen_op_load_s32_T0_T1_im #define HAVE_gen_op_load_s32_T0_T1_im
{ {
static const uint8 op_load_s32_T0_T1_im_code[] = { static const uint8 op_load_s32_T0_T1_im_code[] = {
0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x04,
ADD_RAX_RDX, 0x02, 0x41, 0x89, 0xc4, 0x41, 0x0f, 0xcc
TRANS_RAX,
0x8b, 0x00,
0x41, 0x89, 0xc4, 0x41, 0x0f, 0xcc
}; };
copy_block(op_load_s32_T0_T1_im_code, 56); copy_block(op_load_s32_T0_T1_im_code, 19);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 44) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0; *(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0;
inc_code_ptr(56); inc_code_ptr(19);
} }
#endif #endif
@ -1649,15 +1554,11 @@ DEFINE_GEN(gen_op_load_u16_T0_T1_T2,void,(void))
#define HAVE_gen_op_load_u16_T0_T1_T2 #define HAVE_gen_op_load_u16_T0_T1_T2
{ {
static const uint8 op_load_u16_T0_T1_T2_code[] = { static const uint8 op_load_u16_T0_T1_T2_code[] = {
0x43, 0x8d, 0x04, 0x2e, 0x43, 0x8d, 0x04, 0x2e, 0x0f, 0xb7, 0x00, 0x66, 0xc1, 0xc0, 0x08, 0x44,
TRANS_RAX, 0x0f, 0xb7, 0xe0
0x0f, 0xb7, 0x00,
0x66, 0xc1, 0xc0, 0x08, 0x44, 0x0f, 0xb7, 0xe0
}; };
copy_block(op_load_u16_T0_T1_T2_code, 51); copy_block(op_load_u16_T0_T1_T2_code, 15);
*(uint32_t *)(code_ptr() + 28) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(15);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(51);
} }
#endif #endif
@ -1666,17 +1567,12 @@ DEFINE_GEN(gen_op_load_u16_T0_T1_im,void,(long param1))
#define HAVE_gen_op_load_u16_T0_T1_im #define HAVE_gen_op_load_u16_T0_T1_im
{ {
static const uint8 op_load_u16_T0_T1_im_code[] = { static const uint8 op_load_u16_T0_T1_im_code[] = {
0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xb7,
ADD_RAX_RDX, 0x04, 0x02, 0x66, 0xc1, 0xc0, 0x08, 0x44, 0x0f, 0xb7, 0xe0
TRANS_RAX,
0x0f, 0xb7, 0x00,
0x66, 0xc1, 0xc0, 0x08, 0x44, 0x0f, 0xb7, 0xe0
}; };
copy_block(op_load_u16_T0_T1_im_code, 59); copy_block(op_load_u16_T0_T1_im_code, 22);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 44) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0; *(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0;
inc_code_ptr(59); inc_code_ptr(22);
} }
#endif #endif
@ -1685,15 +1581,10 @@ DEFINE_GEN(gen_op_load_u32_T0_T1_T2,void,(void))
#define HAVE_gen_op_load_u32_T0_T1_T2 #define HAVE_gen_op_load_u32_T0_T1_T2
{ {
static const uint8 op_load_u32_T0_T1_T2_code[] = { static const uint8 op_load_u32_T0_T1_T2_code[] = {
0x43, 0x8d, 0x04, 0x2e, 0x43, 0x8d, 0x04, 0x2e, 0x8b, 0x00, 0x41, 0x89, 0xc4, 0x41, 0x0f, 0xcc
TRANS_RAX,
0x8b, 0x00,
0x41, 0x89, 0xc4, 0x41, 0x0f, 0xcc
}; };
copy_block(op_load_u32_T0_T1_T2_code, 48); copy_block(op_load_u32_T0_T1_T2_code, 12);
*(uint32_t *)(code_ptr() + 28) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(12);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(48);
} }
#endif #endif
@ -1702,17 +1593,12 @@ DEFINE_GEN(gen_op_load_u32_T0_T1_im,void,(long param1))
#define HAVE_gen_op_load_u32_T0_T1_im #define HAVE_gen_op_load_u32_T0_T1_im
{ {
static const uint8 op_load_u32_T0_T1_im_code[] = { static const uint8 op_load_u32_T0_T1_im_code[] = {
0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x04,
ADD_RAX_RDX, 0x02, 0x41, 0x89, 0xc4, 0x41, 0x0f, 0xcc
TRANS_RAX,
0x8b, 0x00,
0x41, 0x89, 0xc4, 0x41, 0x0f, 0xcc
}; };
copy_block(op_load_u32_T0_T1_im_code, 56); copy_block(op_load_u32_T0_T1_im_code, 19);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 44) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0; *(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0;
inc_code_ptr(56); inc_code_ptr(19);
} }
#endif #endif
@ -1721,14 +1607,11 @@ DEFINE_GEN(gen_op_store_16_T0_T1_T2,void,(void))
#define HAVE_gen_op_store_16_T0_T1_T2 #define HAVE_gen_op_store_16_T0_T1_T2
{ {
static const uint8 op_store_16_T0_T1_T2_code[] = { static const uint8 op_store_16_T0_T1_T2_code[] = {
0x43, 0x8d, 0x14, 0x2e, 0x44, 0x89, 0xe0, 0x66, 0xc1, 0xc0, 0x08, 0x43, 0x8d, 0x14, 0x2e, 0x44, 0x89, 0xe0, 0x66, 0xc1, 0xc0, 0x08, 0x66,
TRANS_RDX, 0x89, 0x02
0x66, 0x89, 0x02,
}; };
copy_block(op_store_16_T0_T1_T2_code, 55); copy_block(op_store_16_T0_T1_T2_code, 14);
*(uint32_t *)(code_ptr() + 39) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(14);
*(uint32_t *)(code_ptr() + 48) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(55);
} }
#endif #endif
@ -1738,16 +1621,11 @@ DEFINE_GEN(gen_op_store_16_T0_T1_im,void,(long param1))
{ {
static const uint8 op_store_16_T0_T1_im_code[] = { static const uint8 op_store_16_T0_T1_im_code[] = {
0x44, 0x89, 0xe9, 0x44, 0x89, 0xe2, 0x66, 0xc1, 0xc2, 0x08, 0x48, 0x8d, 0x44, 0x89, 0xe9, 0x44, 0x89, 0xe2, 0x66, 0xc1, 0xc2, 0x08, 0x48, 0x8d,
0x05, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x66, 0x89, 0x14, 0x01
ADD_RAX_RCX,
TRANS_RAX,
0x66, 0x89, 0x10,
}; };
copy_block(op_store_16_T0_T1_im_code, 58); copy_block(op_store_16_T0_T1_im_code, 21);
*(uint32_t *)(code_ptr() + 43) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 51) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 13) = (int32_t)((long)param1 - (long)(code_ptr() + 13 + 4)) + 0; *(uint32_t *)(code_ptr() + 13) = (int32_t)((long)param1 - (long)(code_ptr() + 13 + 4)) + 0;
inc_code_ptr(58); inc_code_ptr(21);
} }
#endif #endif
@ -1756,14 +1634,11 @@ DEFINE_GEN(gen_op_store_32_T0_T1_T2,void,(void))
#define HAVE_gen_op_store_32_T0_T1_T2 #define HAVE_gen_op_store_32_T0_T1_T2
{ {
static const uint8 op_store_32_T0_T1_T2_code[] = { static const uint8 op_store_32_T0_T1_T2_code[] = {
0x44, 0x89, 0xf2, 0x44, 0x89, 0xe1, 0x0f, 0xc9, 0x44, 0x01, 0xea, 0x44, 0x89, 0xf2, 0x44, 0x89, 0xe1, 0x0f, 0xc9, 0x44, 0x01, 0xea, 0x89,
TRANS_RDX, 0x0a
0x89, 0x0a,
}; };
copy_block(op_store_32_T0_T1_T2_code, 54); copy_block(op_store_32_T0_T1_T2_code, 13);
*(uint32_t *)(code_ptr() + 39) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(13);
*(uint32_t *)(code_ptr() + 48) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(54);
} }
#endif #endif
@ -1773,16 +1648,11 @@ DEFINE_GEN(gen_op_store_32_T0_T1_im,void,(long param1))
{ {
static const uint8 op_store_32_T0_T1_im_code[] = { static const uint8 op_store_32_T0_T1_im_code[] = {
0x44, 0x89, 0xe1, 0x0f, 0xc9, 0x44, 0x89, 0xe8, 0x48, 0x8d, 0x15, 0x00, 0x44, 0x89, 0xe1, 0x0f, 0xc9, 0x44, 0x89, 0xe8, 0x48, 0x8d, 0x15, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0x0c, 0x10
ADD_RAX_RDX,
TRANS_RAX,
0x89, 0x08,
}; };
copy_block(op_store_32_T0_T1_im_code, 55); copy_block(op_store_32_T0_T1_im_code, 18);
*(uint32_t *)(code_ptr() + 41) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 49) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 11) = (int32_t)((long)param1 - (long)(code_ptr() + 11 + 4)) + 0; *(uint32_t *)(code_ptr() + 11) = (int32_t)((long)param1 - (long)(code_ptr() + 11 + 4)) + 0;
inc_code_ptr(55); inc_code_ptr(18);
} }
#endif #endif

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,9 @@
#if defined(__x86_64__) #if defined(__x86_64__)
#ifdef __APPLE__
#include "basic-dyngen-ops-x86_64_macos.hpp"
#else
#include "basic-dyngen-ops-x86_64.hpp" #include "basic-dyngen-ops-x86_64.hpp"
#endif
#elif defined(__i386__) #elif defined(__i386__)
#include "basic-dyngen-ops-x86_32.hpp" #include "basic-dyngen-ops-x86_32.hpp"
#else #else

View File

@ -1,30 +1,3 @@
#define ADD_RAX_RCX 0x01,0xc8
#define ADD_RDX_RCX 0x01,0xca
#define ADD_RAX_RDX 0x01,0xd0
#define TRANS_RAX \
0x48,0x3D,0x00,0x30,0x00,0x00,\
0x72,0x16,\
0x48,0x3D,0x00,0xE0,0xFF,0x5F,\
0x72,0x14,\
0x48,0x25,0xFF,0x1F,0x00,0x00,\
0x48,0x05,0x00,0x00,0x00,0x00,\
0xEB,0x06,\
0x48,0x05,0x00,0x00,0x00,0x00
#define TRANS_RDX \
0x48,0x81,0xFA,0x00,0x30,0x00,0x00,\
0x72,0x19,\
0x48,0x81,0xFA,0x00,0xE0,0xFF,0x5F,\
0x72,0x17,\
0x48,0x81,0xE2,0xFF,0x1F,0x00,0x00,\
0x48,0x81,0xC2,0x00,0x00,0x00,0x00,\
0xEB,0x07,\
0x48,0x81,0xC2,0x00,0x00,0x00,0x00
#ifdef DYNGEN_IMPL
extern uint8 gZeroPage[0x3000], gKernelData[0x2000];
#endif
#ifndef DEFINE_CST #ifndef DEFINE_CST
#define DEFINE_CST(NAME, VALUE) #define DEFINE_CST(NAME, VALUE)
#endif #endif
@ -10444,26 +10417,14 @@ DEFINE_GEN(gen_op_load_vect_VD_T0,void,(void))
#define HAVE_gen_op_load_vect_VD_T0 #define HAVE_gen_op_load_vect_VD_T0
{ {
static const uint8 op_load_vect_VD_T0_code[] = { static const uint8 op_load_vect_VD_T0_code[] = {
0x44, 0x89, 0xe2, 0x83, 0xe2, 0xf0, 0x89, 0xd0, 0x44, 0x89, 0xe2, 0x83, 0xe2, 0xf0, 0x89, 0xd0, 0x8b, 0x00, 0x0f, 0xc8,
TRANS_RAX, 0x41, 0x89, 0x07, 0x8d, 0x42, 0x04, 0x89, 0xc0, 0x8b, 0x00, 0x0f, 0xc8,
0x8b, 0x00, 0x41, 0x89, 0x47, 0x04, 0x8d, 0x42, 0x08, 0x89, 0xc0, 0x8b, 0x00, 0x0f,
0x0f, 0xc8, 0x41, 0x89, 0x07, 0x8d, 0x42, 0x04, 0x89, 0xc0, 0xc8, 0x41, 0x89, 0x47, 0x08, 0x83, 0xc2, 0x0c, 0x89, 0xd2, 0x8b, 0x02,
TRANS_RAX, 0x0f, 0xc8, 0x41, 0x89, 0x47, 0x0c
0x8b, 0x00,
0x0f, 0xc8, 0x41, 0x89, 0x47, 0x04, 0x8d, 0x42, 0x08, 0x89, 0xc0,
TRANS_RAX,
0x8b, 0x00,
0x0f, 0xc8, 0x41, 0x89, 0x47, 0x08, 0x83, 0xc2, 0x0c, 0x89, 0xd2, 0x8b,
0x02, 0x0f, 0xc8, 0x41, 0x89, 0x47, 0x0c
}; };
copy_block(op_load_vect_VD_T0_code, 162); copy_block(op_load_vect_VD_T0_code, 54);
*(uint32_t *)(code_ptr() + 32) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(54);
*(uint32_t *)(code_ptr() + 80) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 129) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 40) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 88) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 137) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(162);
} }
#endif #endif
@ -10472,15 +10433,11 @@ DEFINE_GEN(gen_op_load_word_VD_T0,void,(void))
#define HAVE_gen_op_load_word_VD_T0 #define HAVE_gen_op_load_word_VD_T0
{ {
static const uint8 op_load_word_VD_T0_code[] = { static const uint8 op_load_word_VD_T0_code[] = {
0x44, 0x89, 0xe2, 0x48, 0x89, 0xd0, 0x83, 0xe0, 0xfc, 0x44, 0x89, 0xe2, 0x48, 0x89, 0xd0, 0x83, 0xe0, 0xfc, 0x8b, 0x00, 0x0f,
TRANS_RAX, 0xc8, 0xc1, 0xea, 0x02, 0x83, 0xe2, 0x03, 0x41, 0x89, 0x04, 0x97
0x8b, 0x00,
0x0f, 0xc8, 0xc1, 0xea, 0x02, 0x83, 0xe2, 0x03, 0x41, 0x89, 0x04, 0x97
}; };
copy_block(op_load_word_VD_T0_code, 59); copy_block(op_load_word_VD_T0_code, 23);
*(uint32_t *)(code_ptr() + 33) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(23);
*(uint32_t *)(code_ptr() + 41) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(59);
} }
#endif #endif
@ -10538,26 +10495,13 @@ DEFINE_GEN(gen_op_store_vect_VD_T0,void,(void))
{ {
static const uint8 op_store_vect_VD_T0_code[] = { static const uint8 op_store_vect_VD_T0_code[] = {
0x44, 0x89, 0xe1, 0x83, 0xe1, 0xf0, 0x41, 0x8b, 0x07, 0x0f, 0xc8, 0x89, 0x44, 0x89, 0xe1, 0x83, 0xe1, 0xf0, 0x41, 0x8b, 0x07, 0x0f, 0xc8, 0x89,
0xca, 0xca, 0x89, 0x02, 0x41, 0x8b, 0x57, 0x04, 0x0f, 0xca, 0x8d, 0x41, 0x04,
TRANS_RDX, 0x89, 0xc0, 0x89, 0x10, 0x41, 0x8b, 0x57, 0x08, 0x0f, 0xca, 0x8d, 0x41,
0x89, 0x02, 0x08, 0x89, 0xc0, 0x89, 0x10, 0x41, 0x8b, 0x47, 0x0c, 0x0f, 0xc8, 0x83,
0x41, 0x8b, 0x57, 0x04, 0x0f, 0xca, 0x8d, 0x41, 0x04, 0x89, 0xc0, 0xc1, 0x0c, 0x89, 0xc9, 0x89, 0x01
TRANS_RAX,
0x89, 0x10,
0x41, 0x8b, 0x57, 0x08, 0x0f, 0xca, 0x8d, 0x41, 0x08, 0x89, 0xc0,
TRANS_RAX,
0x89, 0x10,
0x41, 0x8b, 0x47, 0x0c, 0x0f, 0xc8, 0x83, 0xc1, 0x0c, 0x89, 0xc9, 0x89,
0x01
}; };
copy_block(op_store_vect_VD_T0_code, 167); copy_block(op_store_vect_VD_T0_code, 54);
*(uint32_t *)(code_ptr() + 41) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(54);
*(uint32_t *)(code_ptr() + 91) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 140) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 50) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 99) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 148) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(167);
} }
#endif #endif
@ -10567,14 +10511,10 @@ DEFINE_GEN(gen_op_store_word_VD_T0,void,(void))
{ {
static const uint8 op_store_word_VD_T0_code[] = { static const uint8 op_store_word_VD_T0_code[] = {
0x44, 0x89, 0xe0, 0x44, 0x89, 0xe2, 0xc1, 0xea, 0x02, 0x83, 0xe2, 0x03, 0x44, 0x89, 0xe0, 0x44, 0x89, 0xe2, 0xc1, 0xea, 0x02, 0x83, 0xe2, 0x03,
0x41, 0x8b, 0x14, 0x97, 0x0f, 0xca, 0x83, 0xe0, 0xfc, 0x41, 0x8b, 0x14, 0x97, 0x0f, 0xca, 0x83, 0xe0, 0xfc, 0x89, 0x10
TRANS_RAX,
0x89, 0x10,
}; };
copy_block(op_store_word_VD_T0_code, 59); copy_block(op_store_word_VD_T0_code, 23);
*(uint32_t *)(code_ptr() + 45) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(23);
*(uint32_t *)(code_ptr() + 53) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(59);
} }
#endif #endif
@ -10753,15 +10693,11 @@ DEFINE_GEN(gen_op_load_double_FD_T1_0,void,(void))
#define HAVE_gen_op_load_double_FD_T1_0 #define HAVE_gen_op_load_double_FD_T1_0
{ {
static const uint8 op_load_double_FD_T1_0_code[] = { static const uint8 op_load_double_FD_T1_0_code[] = {
0x44, 0x89, 0xe8, 0x44, 0x89, 0xe8, 0x48, 0x8b, 0x00, 0x48, 0x0f, 0xc8, 0x48, 0x89, 0x85,
TRANS_RAX, 0xa8, 0x08, 0x10, 0x00
0x48, 0x8b, 0x00,
0x48, 0x0f, 0xc8, 0x48, 0x89, 0x85, 0xa8, 0x08, 0x10, 0x00
}; };
copy_block(op_load_double_FD_T1_0_code, 52); copy_block(op_load_double_FD_T1_0_code, 16);
*(uint32_t *)(code_ptr() + 27) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(16);
*(uint32_t *)(code_ptr() + 35) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(52);
} }
#endif #endif
@ -10770,17 +10706,13 @@ DEFINE_GEN(gen_op_load_single_FD_T1_0,void,(void))
#define HAVE_gen_op_load_single_FD_T1_0 #define HAVE_gen_op_load_single_FD_T1_0
{ {
static const uint8 op_load_single_FD_T1_0_code[] = { static const uint8 op_load_single_FD_T1_0_code[] = {
0x44, 0x89, 0xe8, 0x44, 0x89, 0xe8, 0x8b, 0x00, 0x0f, 0xc8, 0x89, 0x44, 0x24, 0xf4, 0xf3,
TRANS_RAX, 0x0f, 0x10, 0x44, 0x24, 0xf4, 0xf3, 0x0f, 0x5a, 0xc0, 0xf2, 0x0f, 0x11,
0x8b, 0x00, 0x44, 0x24, 0xf8, 0x48, 0x8b, 0x44, 0x24, 0xf8, 0x48, 0x89, 0x85, 0xa8,
0x0f, 0xc8, 0x89, 0x44, 0x24, 0xf4, 0xf3, 0x0f, 0x10, 0x44, 0x24, 0xf4, 0x08, 0x10, 0x00
0xf3, 0x0f, 0x5a, 0xc0, 0xf2, 0x0f, 0x11, 0x44, 0x24, 0xf8, 0x48, 0x8b,
0x44, 0x24, 0xf8, 0x48, 0x89, 0x85, 0xa8, 0x08, 0x10, 0x00
}; };
copy_block(op_load_single_FD_T1_0_code, 75); copy_block(op_load_single_FD_T1_0_code, 39);
*(uint32_t *)(code_ptr() + 27) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(39);
*(uint32_t *)(code_ptr() + 35) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(75);
} }
#endif #endif
@ -10943,15 +10875,11 @@ DEFINE_GEN(gen_op_load_double_FD_T1_T2,void,(void))
#define HAVE_gen_op_load_double_FD_T1_T2 #define HAVE_gen_op_load_double_FD_T1_T2
{ {
static const uint8 op_load_double_FD_T1_T2_code[] = { static const uint8 op_load_double_FD_T1_T2_code[] = {
0x43, 0x8d, 0x04, 0x2e, 0x43, 0x8d, 0x04, 0x2e, 0x48, 0x8b, 0x00, 0x48, 0x0f, 0xc8, 0x48, 0x89,
TRANS_RAX, 0x85, 0xa8, 0x08, 0x10, 0x00
0x48, 0x8b, 0x00,
0x48, 0x0f, 0xc8, 0x48, 0x89, 0x85, 0xa8, 0x08, 0x10, 0x00
}; };
copy_block(op_load_double_FD_T1_T2_code, 53); copy_block(op_load_double_FD_T1_T2_code, 17);
*(uint32_t *)(code_ptr() + 28) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(17);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(53);
} }
#endif #endif
@ -10960,17 +10888,12 @@ DEFINE_GEN(gen_op_load_double_FD_T1_im,void,(long param1))
#define HAVE_gen_op_load_double_FD_T1_im #define HAVE_gen_op_load_double_FD_T1_im
{ {
static const uint8 op_load_double_FD_T1_im_code[] = { static const uint8 op_load_double_FD_T1_im_code[] = {
0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b,
ADD_RAX_RDX, 0x04, 0x02, 0x48, 0x0f, 0xc8, 0x48, 0x89, 0x85, 0xa8, 0x08, 0x10, 0x00
TRANS_RAX,
0x48, 0x8b, 0x00,
0x48, 0x0f, 0xc8, 0x48, 0x89, 0x85, 0xa8, 0x08, 0x10, 0x00
}; };
copy_block(op_load_double_FD_T1_im_code, 61); copy_block(op_load_double_FD_T1_im_code, 24);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 44) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0; *(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0;
inc_code_ptr(61); inc_code_ptr(24);
} }
#endif #endif
@ -10979,17 +10902,13 @@ DEFINE_GEN(gen_op_load_single_FD_T1_T2,void,(void))
#define HAVE_gen_op_load_single_FD_T1_T2 #define HAVE_gen_op_load_single_FD_T1_T2
{ {
static const uint8 op_load_single_FD_T1_T2_code[] = { static const uint8 op_load_single_FD_T1_T2_code[] = {
0x43, 0x8d, 0x04, 0x2e, 0x43, 0x8d, 0x04, 0x2e, 0x8b, 0x00, 0x0f, 0xc8, 0x89, 0x44, 0x24, 0xf4,
TRANS_RAX, 0xf3, 0x0f, 0x10, 0x44, 0x24, 0xf4, 0xf3, 0x0f, 0x5a, 0xc0, 0xf2, 0x0f,
0x8b, 0x00, 0x11, 0x44, 0x24, 0xf8, 0x48, 0x8b, 0x44, 0x24, 0xf8, 0x48, 0x89, 0x85,
0x0f, 0xc8, 0x89, 0x44, 0x24, 0xf4, 0xf3, 0x0f, 0x10, 0x44, 0x24, 0xf4, 0xa8, 0x08, 0x10, 0x00
0xf3, 0x0f, 0x5a, 0xc0, 0xf2, 0x0f, 0x11, 0x44, 0x24, 0xf8, 0x48, 0x8b,
0x44, 0x24, 0xf8, 0x48, 0x89, 0x85, 0xa8, 0x08, 0x10, 0x00
}; };
copy_block(op_load_single_FD_T1_T2_code, 76); copy_block(op_load_single_FD_T1_T2_code, 40);
*(uint32_t *)(code_ptr() + 28) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(40);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(76);
} }
#endif #endif
@ -10998,19 +10917,14 @@ DEFINE_GEN(gen_op_load_single_FD_T1_im,void,(long param1))
#define HAVE_gen_op_load_single_FD_T1_im #define HAVE_gen_op_load_single_FD_T1_im
{ {
static const uint8 op_load_single_FD_T1_im_code[] = { static const uint8 op_load_single_FD_T1_im_code[] = {
0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x44, 0x89, 0xea, 0x48, 0x8d, 0x05, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x04,
ADD_RAX_RDX, 0x02, 0x0f, 0xc8, 0x89, 0x44, 0x24, 0xf4, 0xf3, 0x0f, 0x10, 0x44, 0x24,
TRANS_RAX, 0xf4, 0xf3, 0x0f, 0x5a, 0xc0, 0xf2, 0x0f, 0x11, 0x44, 0x24, 0xf8, 0x48,
0x8b, 0x00, 0x8b, 0x44, 0x24, 0xf8, 0x48, 0x89, 0x85, 0xa8, 0x08, 0x10, 0x00
0x0f, 0xc8, 0x89, 0x44, 0x24, 0xf4, 0xf3, 0x0f, 0x10, 0x44, 0x24, 0xf4,
0xf3, 0x0f, 0x5a, 0xc0, 0xf2, 0x0f, 0x11, 0x44, 0x24, 0xf8, 0x48, 0x8b,
0x44, 0x24, 0xf8, 0x48, 0x89, 0x85, 0xa8, 0x08, 0x10, 0x00
}; };
copy_block(op_load_single_FD_T1_im_code, 84); copy_block(op_load_single_FD_T1_im_code, 47);
*(uint32_t *)(code_ptr() + 36) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 44) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0; *(uint32_t *)(code_ptr() + 6) = (int32_t)((long)param1 - (long)(code_ptr() + 6 + 4)) + 0;
inc_code_ptr(84); inc_code_ptr(47);
} }
#endif #endif
@ -11019,14 +10933,11 @@ DEFINE_GEN(gen_op_store_double_F0_T1_0,void,(void))
#define HAVE_gen_op_store_double_F0_T1_0 #define HAVE_gen_op_store_double_F0_T1_0
{ {
static const uint8 op_store_double_F0_T1_0_code[] = { static const uint8 op_store_double_F0_T1_0_code[] = {
0x49, 0x8b, 0x04, 0x24, 0x44, 0x89, 0xea, 0x48, 0x0f, 0xc8, 0x49, 0x8b, 0x04, 0x24, 0x44, 0x89, 0xea, 0x48, 0x0f, 0xc8, 0x48, 0x89,
TRANS_RDX, 0x02
0x48, 0x89, 0x02,
}; };
copy_block(op_store_double_F0_T1_0_code, 54); copy_block(op_store_double_F0_T1_0_code, 13);
*(uint32_t *)(code_ptr() + 38) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(13);
*(uint32_t *)(code_ptr() + 47) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(54);
} }
#endif #endif
@ -11041,14 +10952,11 @@ DEFINE_GEN(gen_op_store_single_F0_T1_0,void,(void))
0xff, 0x3f, 0x48, 0xc1, 0xe9, 0x03, 0x89, 0xc8, 0x25, 0x00, 0x00, 0x00, 0xff, 0x3f, 0x48, 0xc1, 0xe9, 0x03, 0x89, 0xc8, 0x25, 0x00, 0x00, 0x00,
0xc0, 0x09, 0xc2, 0xeb, 0x19, 0x48, 0x89, 0x4c, 0x24, 0xf0, 0xf2, 0x0f, 0xc0, 0x09, 0xc2, 0xeb, 0x19, 0x48, 0x89, 0x4c, 0x24, 0xf0, 0xf2, 0x0f,
0x10, 0x44, 0x24, 0xf0, 0xf2, 0x0f, 0x5a, 0xc0, 0xf3, 0x0f, 0x11, 0x44, 0x10, 0x44, 0x24, 0xf0, 0xf2, 0x0f, 0x5a, 0xc0, 0xf3, 0x0f, 0x11, 0x44,
0x24, 0xfc, 0x8b, 0x54, 0x24, 0xfc, 0x0f, 0xca, 0x44, 0x89, 0xe8, 0x24, 0xfc, 0x8b, 0x54, 0x24, 0xfc, 0x0f, 0xca, 0x44, 0x89, 0xe8, 0x89,
TRANS_RAX, 0x10
0x89, 0x10,
}; };
copy_block(op_store_single_F0_T1_0_code, 121); copy_block(op_store_single_F0_T1_0_code, 85);
*(uint32_t *)(code_ptr() + 107) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(85);
*(uint32_t *)(code_ptr() + 115) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(121);
} }
#endif #endif
@ -11117,14 +11025,11 @@ DEFINE_GEN(gen_op_store_double_F0_T1_T2,void,(void))
#define HAVE_gen_op_store_double_F0_T1_T2 #define HAVE_gen_op_store_double_F0_T1_T2
{ {
static const uint8 op_store_double_F0_T1_T2_code[] = { static const uint8 op_store_double_F0_T1_T2_code[] = {
0x49, 0x8b, 0x04, 0x24, 0x43, 0x8d, 0x14, 0x2e, 0x48, 0x0f, 0xc8, 0x49, 0x8b, 0x04, 0x24, 0x43, 0x8d, 0x14, 0x2e, 0x48, 0x0f, 0xc8, 0x48,
TRANS_RDX, 0x89, 0x02
0x48, 0x89, 0x02,
}; };
copy_block(op_store_double_F0_T1_T2_code, 55); copy_block(op_store_double_F0_T1_T2_code, 14);
*(uint32_t *)(code_ptr() + 39) = (uint32_t)(uintptr)gKernelData; inc_code_ptr(14);
*(uint32_t *)(code_ptr() + 48) = (uint32_t)(uintptr)gZeroPage;
inc_code_ptr(55);
} }
#endif #endif
@ -11134,16 +11039,11 @@ DEFINE_GEN(gen_op_store_double_F0_T1_im,void,(long param1))
{ {
static const uint8 op_store_double_F0_T1_im_code[] = { static const uint8 op_store_double_F0_T1_im_code[] = {
0x49, 0x8b, 0x04, 0x24, 0x44, 0x89, 0xe9, 0x48, 0x0f, 0xc8, 0x48, 0x8d, 0x49, 0x8b, 0x04, 0x24, 0x44, 0x89, 0xe9, 0x48, 0x0f, 0xc8, 0x48, 0x8d,
0x15, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x48, 0x89, 0x04, 0x11
ADD_RDX_RCX,
TRANS_RDX,
0x48, 0x89, 0x02,
}; };
copy_block(op_store_double_F0_T1_im_code, 63); copy_block(op_store_double_F0_T1_im_code, 21);
*(uint32_t *)(code_ptr() + 47) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 56) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 13) = (int32_t)((long)param1 - (long)(code_ptr() + 13 + 4)) + 0; *(uint32_t *)(code_ptr() + 13) = (int32_t)((long)param1 - (long)(code_ptr() + 13 + 4)) + 0;
inc_code_ptr(63); inc_code_ptr(21);
} }
#endif #endif
@ -11178,16 +11078,11 @@ DEFINE_GEN(gen_op_store_single_F0_T1_im,void,(long param1))
0xc0, 0x09, 0xc1, 0xeb, 0x19, 0x48, 0x89, 0x54, 0x24, 0xf0, 0xf2, 0x0f, 0xc0, 0x09, 0xc1, 0xeb, 0x19, 0x48, 0x89, 0x54, 0x24, 0xf0, 0xf2, 0x0f,
0x10, 0x44, 0x24, 0xf0, 0xf2, 0x0f, 0x5a, 0xc0, 0xf3, 0x0f, 0x11, 0x44, 0x10, 0x44, 0x24, 0xf0, 0xf2, 0x0f, 0x5a, 0xc0, 0xf3, 0x0f, 0x11, 0x44,
0x24, 0xfc, 0x8b, 0x4c, 0x24, 0xfc, 0x0f, 0xc9, 0x44, 0x89, 0xe8, 0x48, 0x24, 0xfc, 0x8b, 0x4c, 0x24, 0xfc, 0x0f, 0xc9, 0x44, 0x89, 0xe8, 0x48,
0x8d, 0x15, 0x00, 0x00, 0x00, 0x00, 0x8d, 0x15, 0x00, 0x00, 0x00, 0x00, 0x89, 0x0c, 0x10
ADD_RAX_RDX,
TRANS_RAX,
0x89, 0x08,
}; };
copy_block(op_store_single_F0_T1_im_code, 130); copy_block(op_store_single_F0_T1_im_code, 93);
*(uint32_t *)(code_ptr() + 116) = (uint32_t)(uintptr)gKernelData;
*(uint32_t *)(code_ptr() + 124) = (uint32_t)(uintptr)gZeroPage;
*(uint32_t *)(code_ptr() + 86) = (int32_t)((long)param1 - (long)(code_ptr() + 86 + 4)) + 0; *(uint32_t *)(code_ptr() + 86) = (int32_t)((long)param1 - (long)(code_ptr() + 86 + 4)) + 0;
inc_code_ptr(130); inc_code_ptr(93);
} }
#endif #endif

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,9 @@
#if defined(__x86_64__) #if defined(__x86_64__)
#ifdef __APPLE__
#include "ppc-dyngen-ops-x86_64_macos.hpp"
#else
#include "ppc-dyngen-ops-x86_64.hpp" #include "ppc-dyngen-ops-x86_64.hpp"
#endif
#elif defined(__i386__) #elif defined(__i386__)
#include "ppc-dyngen-ops-x86_32.hpp" #include "ppc-dyngen-ops-x86_32.hpp"
#else #else