eliminate os_core, move into base; eliminate regs, move into arch abstraction layer, define x64 regs in x64 layer; move win32 backend for os core (now base) functionality to top-level win32 layer

This commit is contained in:
Ryan Fleury
2026-05-08 15:21:21 -07:00
parent 24c858171f
commit aea4a4ff9d
148 changed files with 7942 additions and 5268 deletions
+780
View File
@@ -0,0 +1,780 @@
// Copyright (c) Epic Games Tools
// Licensed under the MIT license (https://opensource.org/license/mit/)
//- GENERATED CODE
C_LINKAGE_BEGIN
B8 x64_reg_code_is_vector_table[189] =
{
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
};
String8 x64_reg_code_name_table[189] =
{
str8_lit_comp("nil"),
str8_lit_comp("rax"),
str8_lit_comp("rcx"),
str8_lit_comp("rdx"),
str8_lit_comp("rbx"),
str8_lit_comp("rsp"),
str8_lit_comp("rbp"),
str8_lit_comp("rsi"),
str8_lit_comp("rdi"),
str8_lit_comp("r8"),
str8_lit_comp("r9"),
str8_lit_comp("r10"),
str8_lit_comp("r11"),
str8_lit_comp("r12"),
str8_lit_comp("r13"),
str8_lit_comp("r14"),
str8_lit_comp("r15"),
str8_lit_comp("fsbase"),
str8_lit_comp("gsbase"),
str8_lit_comp("rip"),
str8_lit_comp("rflags"),
str8_lit_comp("dr0"),
str8_lit_comp("dr1"),
str8_lit_comp("dr2"),
str8_lit_comp("dr3"),
str8_lit_comp("dr4"),
str8_lit_comp("dr5"),
str8_lit_comp("dr6"),
str8_lit_comp("dr7"),
str8_lit_comp("st0"),
str8_lit_comp("st1"),
str8_lit_comp("st2"),
str8_lit_comp("st3"),
str8_lit_comp("st4"),
str8_lit_comp("st5"),
str8_lit_comp("st6"),
str8_lit_comp("st7"),
str8_lit_comp("fcw"),
str8_lit_comp("fsw"),
str8_lit_comp("ftw"),
str8_lit_comp("fop"),
str8_lit_comp("fcs"),
str8_lit_comp("fds"),
str8_lit_comp("fip"),
str8_lit_comp("fdp"),
str8_lit_comp("mxcsr"),
str8_lit_comp("mxcsr_mask"),
str8_lit_comp("ss"),
str8_lit_comp("cs"),
str8_lit_comp("ds"),
str8_lit_comp("es"),
str8_lit_comp("fs"),
str8_lit_comp("gs"),
str8_lit_comp("zmm0"),
str8_lit_comp("zmm1"),
str8_lit_comp("zmm2"),
str8_lit_comp("zmm3"),
str8_lit_comp("zmm4"),
str8_lit_comp("zmm5"),
str8_lit_comp("zmm6"),
str8_lit_comp("zmm7"),
str8_lit_comp("zmm8"),
str8_lit_comp("zmm9"),
str8_lit_comp("zmm10"),
str8_lit_comp("zmm11"),
str8_lit_comp("zmm12"),
str8_lit_comp("zmm13"),
str8_lit_comp("zmm14"),
str8_lit_comp("zmm15"),
str8_lit_comp("zmm16"),
str8_lit_comp("zmm17"),
str8_lit_comp("zmm18"),
str8_lit_comp("zmm19"),
str8_lit_comp("zmm20"),
str8_lit_comp("zmm21"),
str8_lit_comp("zmm22"),
str8_lit_comp("zmm23"),
str8_lit_comp("zmm24"),
str8_lit_comp("zmm25"),
str8_lit_comp("zmm26"),
str8_lit_comp("zmm27"),
str8_lit_comp("zmm28"),
str8_lit_comp("zmm29"),
str8_lit_comp("zmm30"),
str8_lit_comp("zmm31"),
str8_lit_comp("k0"),
str8_lit_comp("k1"),
str8_lit_comp("k2"),
str8_lit_comp("k3"),
str8_lit_comp("k4"),
str8_lit_comp("k5"),
str8_lit_comp("k6"),
str8_lit_comp("k7"),
str8_lit_comp("cetmsr"),
str8_lit_comp("cetssp"),
str8_lit_comp("eax"),
str8_lit_comp("ecx"),
str8_lit_comp("edx"),
str8_lit_comp("ebx"),
str8_lit_comp("esp"),
str8_lit_comp("ebp"),
str8_lit_comp("esi"),
str8_lit_comp("edi"),
str8_lit_comp("r8d"),
str8_lit_comp("r9d"),
str8_lit_comp("r10d"),
str8_lit_comp("r11d"),
str8_lit_comp("r12d"),
str8_lit_comp("r13d"),
str8_lit_comp("r14d"),
str8_lit_comp("r15d"),
str8_lit_comp("eflags"),
str8_lit_comp("ax"),
str8_lit_comp("cx"),
str8_lit_comp("dx"),
str8_lit_comp("bx"),
str8_lit_comp("si"),
str8_lit_comp("di"),
str8_lit_comp("sp"),
str8_lit_comp("bp"),
str8_lit_comp("ip"),
str8_lit_comp("r8w"),
str8_lit_comp("r9w"),
str8_lit_comp("r10w"),
str8_lit_comp("r11w"),
str8_lit_comp("r12w"),
str8_lit_comp("r13w"),
str8_lit_comp("r14w"),
str8_lit_comp("r15w"),
str8_lit_comp("al"),
str8_lit_comp("cl"),
str8_lit_comp("dl"),
str8_lit_comp("bl"),
str8_lit_comp("sil"),
str8_lit_comp("dil"),
str8_lit_comp("bpl"),
str8_lit_comp("spl"),
str8_lit_comp("r8b"),
str8_lit_comp("r9b"),
str8_lit_comp("r10b"),
str8_lit_comp("r11b"),
str8_lit_comp("r12b"),
str8_lit_comp("r13b"),
str8_lit_comp("r14b"),
str8_lit_comp("r15b"),
str8_lit_comp("ah"),
str8_lit_comp("ch"),
str8_lit_comp("dh"),
str8_lit_comp("bh"),
str8_lit_comp("xmm0"),
str8_lit_comp("xmm1"),
str8_lit_comp("xmm2"),
str8_lit_comp("xmm3"),
str8_lit_comp("xmm4"),
str8_lit_comp("xmm5"),
str8_lit_comp("xmm6"),
str8_lit_comp("xmm7"),
str8_lit_comp("xmm8"),
str8_lit_comp("xmm9"),
str8_lit_comp("xmm10"),
str8_lit_comp("xmm11"),
str8_lit_comp("xmm12"),
str8_lit_comp("xmm13"),
str8_lit_comp("xmm14"),
str8_lit_comp("xmm15"),
str8_lit_comp("ymm0"),
str8_lit_comp("ymm1"),
str8_lit_comp("ymm2"),
str8_lit_comp("ymm3"),
str8_lit_comp("ymm4"),
str8_lit_comp("ymm5"),
str8_lit_comp("ymm6"),
str8_lit_comp("ymm7"),
str8_lit_comp("ymm8"),
str8_lit_comp("ymm9"),
str8_lit_comp("ymm10"),
str8_lit_comp("ymm11"),
str8_lit_comp("ymm12"),
str8_lit_comp("ymm13"),
str8_lit_comp("ymm14"),
str8_lit_comp("ymm15"),
str8_lit_comp("mm0"),
str8_lit_comp("mm1"),
str8_lit_comp("mm2"),
str8_lit_comp("mm3"),
str8_lit_comp("mm4"),
str8_lit_comp("mm5"),
str8_lit_comp("mm6"),
str8_lit_comp("mm7"),
};
U8 x64_reg_code_base_table[189] =
{
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
X64_RegCode_rax,
X64_RegCode_rcx,
X64_RegCode_rdx,
X64_RegCode_rbx,
X64_RegCode_rsp,
X64_RegCode_rbp,
X64_RegCode_rsi,
X64_RegCode_rdi,
X64_RegCode_r8,
X64_RegCode_r9,
X64_RegCode_r10,
X64_RegCode_r11,
X64_RegCode_r12,
X64_RegCode_r13,
X64_RegCode_r14,
X64_RegCode_r15,
X64_RegCode_rflags,
X64_RegCode_rax,
X64_RegCode_rcx,
X64_RegCode_rdx,
X64_RegCode_rbx,
X64_RegCode_rsi,
X64_RegCode_rdi,
X64_RegCode_rsp,
X64_RegCode_rbp,
X64_RegCode_rip,
X64_RegCode_r8,
X64_RegCode_r9,
X64_RegCode_r10,
X64_RegCode_r11,
X64_RegCode_r12,
X64_RegCode_r13,
X64_RegCode_r14,
X64_RegCode_r15,
X64_RegCode_rax,
X64_RegCode_rcx,
X64_RegCode_rdx,
X64_RegCode_rbx,
X64_RegCode_rsi,
X64_RegCode_rdi,
X64_RegCode_rbp,
X64_RegCode_rsp,
X64_RegCode_r8,
X64_RegCode_r9,
X64_RegCode_r10,
X64_RegCode_r11,
X64_RegCode_r12,
X64_RegCode_r13,
X64_RegCode_r14,
X64_RegCode_r15,
X64_RegCode_rax,
X64_RegCode_rcx,
X64_RegCode_rdx,
X64_RegCode_rbx,
X64_RegCode_zmm0,
X64_RegCode_zmm1,
X64_RegCode_zmm2,
X64_RegCode_zmm3,
X64_RegCode_zmm4,
X64_RegCode_zmm5,
X64_RegCode_zmm6,
X64_RegCode_zmm7,
X64_RegCode_zmm8,
X64_RegCode_zmm9,
X64_RegCode_zmm10,
X64_RegCode_zmm11,
X64_RegCode_zmm12,
X64_RegCode_zmm13,
X64_RegCode_zmm14,
X64_RegCode_zmm15,
X64_RegCode_zmm0,
X64_RegCode_zmm1,
X64_RegCode_zmm2,
X64_RegCode_zmm3,
X64_RegCode_zmm4,
X64_RegCode_zmm5,
X64_RegCode_zmm6,
X64_RegCode_zmm7,
X64_RegCode_zmm8,
X64_RegCode_zmm9,
X64_RegCode_zmm10,
X64_RegCode_zmm11,
X64_RegCode_zmm12,
X64_RegCode_zmm13,
X64_RegCode_zmm14,
X64_RegCode_zmm15,
X64_RegCode_st0,
X64_RegCode_st1,
X64_RegCode_st2,
X64_RegCode_st3,
X64_RegCode_st4,
X64_RegCode_st5,
X64_RegCode_st6,
X64_RegCode_st7,
};
Rng1U16 x64_reg_code_rng_table[189] =
{
{0},
{(U16)OffsetOf(X64_RegBlock, rax), (U16)OffsetOf(X64_RegBlock, rax) + 8},
{(U16)OffsetOf(X64_RegBlock, rcx), (U16)OffsetOf(X64_RegBlock, rcx) + 8},
{(U16)OffsetOf(X64_RegBlock, rdx), (U16)OffsetOf(X64_RegBlock, rdx) + 8},
{(U16)OffsetOf(X64_RegBlock, rbx), (U16)OffsetOf(X64_RegBlock, rbx) + 8},
{(U16)OffsetOf(X64_RegBlock, rsp), (U16)OffsetOf(X64_RegBlock, rsp) + 8},
{(U16)OffsetOf(X64_RegBlock, rbp), (U16)OffsetOf(X64_RegBlock, rbp) + 8},
{(U16)OffsetOf(X64_RegBlock, rsi), (U16)OffsetOf(X64_RegBlock, rsi) + 8},
{(U16)OffsetOf(X64_RegBlock, rdi), (U16)OffsetOf(X64_RegBlock, rdi) + 8},
{(U16)OffsetOf(X64_RegBlock, r8), (U16)OffsetOf(X64_RegBlock, r8) + 8},
{(U16)OffsetOf(X64_RegBlock, r9), (U16)OffsetOf(X64_RegBlock, r9) + 8},
{(U16)OffsetOf(X64_RegBlock, r10), (U16)OffsetOf(X64_RegBlock, r10) + 8},
{(U16)OffsetOf(X64_RegBlock, r11), (U16)OffsetOf(X64_RegBlock, r11) + 8},
{(U16)OffsetOf(X64_RegBlock, r12), (U16)OffsetOf(X64_RegBlock, r12) + 8},
{(U16)OffsetOf(X64_RegBlock, r13), (U16)OffsetOf(X64_RegBlock, r13) + 8},
{(U16)OffsetOf(X64_RegBlock, r14), (U16)OffsetOf(X64_RegBlock, r14) + 8},
{(U16)OffsetOf(X64_RegBlock, r15), (U16)OffsetOf(X64_RegBlock, r15) + 8},
{(U16)OffsetOf(X64_RegBlock, fsbase), (U16)OffsetOf(X64_RegBlock, fsbase) + 8},
{(U16)OffsetOf(X64_RegBlock, gsbase), (U16)OffsetOf(X64_RegBlock, gsbase) + 8},
{(U16)OffsetOf(X64_RegBlock, rip), (U16)OffsetOf(X64_RegBlock, rip) + 8},
{(U16)OffsetOf(X64_RegBlock, rflags), (U16)OffsetOf(X64_RegBlock, rflags) + 8},
{(U16)OffsetOf(X64_RegBlock, dr0), (U16)OffsetOf(X64_RegBlock, dr0) + 8},
{(U16)OffsetOf(X64_RegBlock, dr1), (U16)OffsetOf(X64_RegBlock, dr1) + 8},
{(U16)OffsetOf(X64_RegBlock, dr2), (U16)OffsetOf(X64_RegBlock, dr2) + 8},
{(U16)OffsetOf(X64_RegBlock, dr3), (U16)OffsetOf(X64_RegBlock, dr3) + 8},
{(U16)OffsetOf(X64_RegBlock, dr4), (U16)OffsetOf(X64_RegBlock, dr4) + 8},
{(U16)OffsetOf(X64_RegBlock, dr5), (U16)OffsetOf(X64_RegBlock, dr5) + 8},
{(U16)OffsetOf(X64_RegBlock, dr6), (U16)OffsetOf(X64_RegBlock, dr6) + 8},
{(U16)OffsetOf(X64_RegBlock, dr7), (U16)OffsetOf(X64_RegBlock, dr7) + 8},
{(U16)OffsetOf(X64_RegBlock, st0), (U16)OffsetOf(X64_RegBlock, st0) + 10},
{(U16)OffsetOf(X64_RegBlock, st1), (U16)OffsetOf(X64_RegBlock, st1) + 10},
{(U16)OffsetOf(X64_RegBlock, st2), (U16)OffsetOf(X64_RegBlock, st2) + 10},
{(U16)OffsetOf(X64_RegBlock, st3), (U16)OffsetOf(X64_RegBlock, st3) + 10},
{(U16)OffsetOf(X64_RegBlock, st4), (U16)OffsetOf(X64_RegBlock, st4) + 10},
{(U16)OffsetOf(X64_RegBlock, st5), (U16)OffsetOf(X64_RegBlock, st5) + 10},
{(U16)OffsetOf(X64_RegBlock, st6), (U16)OffsetOf(X64_RegBlock, st6) + 10},
{(U16)OffsetOf(X64_RegBlock, st7), (U16)OffsetOf(X64_RegBlock, st7) + 10},
{(U16)OffsetOf(X64_RegBlock, fcw), (U16)OffsetOf(X64_RegBlock, fcw) + 2},
{(U16)OffsetOf(X64_RegBlock, fsw), (U16)OffsetOf(X64_RegBlock, fsw) + 2},
{(U16)OffsetOf(X64_RegBlock, ftw), (U16)OffsetOf(X64_RegBlock, ftw) + 1},
{(U16)OffsetOf(X64_RegBlock, fop), (U16)OffsetOf(X64_RegBlock, fop) + 2},
{(U16)OffsetOf(X64_RegBlock, fcs), (U16)OffsetOf(X64_RegBlock, fcs) + 2},
{(U16)OffsetOf(X64_RegBlock, fds), (U16)OffsetOf(X64_RegBlock, fds) + 2},
{(U16)OffsetOf(X64_RegBlock, fip), (U16)OffsetOf(X64_RegBlock, fip) + 8},
{(U16)OffsetOf(X64_RegBlock, fdp), (U16)OffsetOf(X64_RegBlock, fdp) + 8},
{(U16)OffsetOf(X64_RegBlock, mxcsr), (U16)OffsetOf(X64_RegBlock, mxcsr) + 4},
{(U16)OffsetOf(X64_RegBlock, mxcsr_mask), (U16)OffsetOf(X64_RegBlock, mxcsr_mask) + 4},
{(U16)OffsetOf(X64_RegBlock, ss), (U16)OffsetOf(X64_RegBlock, ss) + 2},
{(U16)OffsetOf(X64_RegBlock, cs), (U16)OffsetOf(X64_RegBlock, cs) + 2},
{(U16)OffsetOf(X64_RegBlock, ds), (U16)OffsetOf(X64_RegBlock, ds) + 2},
{(U16)OffsetOf(X64_RegBlock, es), (U16)OffsetOf(X64_RegBlock, es) + 2},
{(U16)OffsetOf(X64_RegBlock, fs), (U16)OffsetOf(X64_RegBlock, fs) + 2},
{(U16)OffsetOf(X64_RegBlock, gs), (U16)OffsetOf(X64_RegBlock, gs) + 2},
{(U16)OffsetOf(X64_RegBlock, zmm0), (U16)OffsetOf(X64_RegBlock, zmm0) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm1), (U16)OffsetOf(X64_RegBlock, zmm1) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm2), (U16)OffsetOf(X64_RegBlock, zmm2) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm3), (U16)OffsetOf(X64_RegBlock, zmm3) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm4), (U16)OffsetOf(X64_RegBlock, zmm4) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm5), (U16)OffsetOf(X64_RegBlock, zmm5) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm6), (U16)OffsetOf(X64_RegBlock, zmm6) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm7), (U16)OffsetOf(X64_RegBlock, zmm7) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm8), (U16)OffsetOf(X64_RegBlock, zmm8) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm9), (U16)OffsetOf(X64_RegBlock, zmm9) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm10), (U16)OffsetOf(X64_RegBlock, zmm10) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm11), (U16)OffsetOf(X64_RegBlock, zmm11) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm12), (U16)OffsetOf(X64_RegBlock, zmm12) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm13), (U16)OffsetOf(X64_RegBlock, zmm13) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm14), (U16)OffsetOf(X64_RegBlock, zmm14) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm15), (U16)OffsetOf(X64_RegBlock, zmm15) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm16), (U16)OffsetOf(X64_RegBlock, zmm16) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm17), (U16)OffsetOf(X64_RegBlock, zmm17) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm18), (U16)OffsetOf(X64_RegBlock, zmm18) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm19), (U16)OffsetOf(X64_RegBlock, zmm19) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm20), (U16)OffsetOf(X64_RegBlock, zmm20) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm21), (U16)OffsetOf(X64_RegBlock, zmm21) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm22), (U16)OffsetOf(X64_RegBlock, zmm22) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm23), (U16)OffsetOf(X64_RegBlock, zmm23) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm24), (U16)OffsetOf(X64_RegBlock, zmm24) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm25), (U16)OffsetOf(X64_RegBlock, zmm25) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm26), (U16)OffsetOf(X64_RegBlock, zmm26) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm27), (U16)OffsetOf(X64_RegBlock, zmm27) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm28), (U16)OffsetOf(X64_RegBlock, zmm28) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm29), (U16)OffsetOf(X64_RegBlock, zmm29) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm30), (U16)OffsetOf(X64_RegBlock, zmm30) + 64},
{(U16)OffsetOf(X64_RegBlock, zmm31), (U16)OffsetOf(X64_RegBlock, zmm31) + 64},
{(U16)OffsetOf(X64_RegBlock, k0), (U16)OffsetOf(X64_RegBlock, k0) + 8},
{(U16)OffsetOf(X64_RegBlock, k1), (U16)OffsetOf(X64_RegBlock, k1) + 8},
{(U16)OffsetOf(X64_RegBlock, k2), (U16)OffsetOf(X64_RegBlock, k2) + 8},
{(U16)OffsetOf(X64_RegBlock, k3), (U16)OffsetOf(X64_RegBlock, k3) + 8},
{(U16)OffsetOf(X64_RegBlock, k4), (U16)OffsetOf(X64_RegBlock, k4) + 8},
{(U16)OffsetOf(X64_RegBlock, k5), (U16)OffsetOf(X64_RegBlock, k5) + 8},
{(U16)OffsetOf(X64_RegBlock, k6), (U16)OffsetOf(X64_RegBlock, k6) + 8},
{(U16)OffsetOf(X64_RegBlock, k7), (U16)OffsetOf(X64_RegBlock, k7) + 8},
{(U16)OffsetOf(X64_RegBlock, cetmsr), (U16)OffsetOf(X64_RegBlock, cetmsr) + 8},
{(U16)OffsetOf(X64_RegBlock, cetssp), (U16)OffsetOf(X64_RegBlock, cetssp) + 8},
{(U16)OffsetOf(X64_RegBlock, rax) + 0, (U16)OffsetOf(X64_RegBlock, rax) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, rcx) + 0, (U16)OffsetOf(X64_RegBlock, rcx) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, rdx) + 0, (U16)OffsetOf(X64_RegBlock, rdx) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, rbx) + 0, (U16)OffsetOf(X64_RegBlock, rbx) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, rsp) + 0, (U16)OffsetOf(X64_RegBlock, rsp) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, rbp) + 0, (U16)OffsetOf(X64_RegBlock, rbp) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, rsi) + 0, (U16)OffsetOf(X64_RegBlock, rsi) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, rdi) + 0, (U16)OffsetOf(X64_RegBlock, rdi) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, r8) + 0, (U16)OffsetOf(X64_RegBlock, r8) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, r9) + 0, (U16)OffsetOf(X64_RegBlock, r9) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, r10) + 0, (U16)OffsetOf(X64_RegBlock, r10) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, r11) + 0, (U16)OffsetOf(X64_RegBlock, r11) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, r12) + 0, (U16)OffsetOf(X64_RegBlock, r12) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, r13) + 0, (U16)OffsetOf(X64_RegBlock, r13) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, r14) + 0, (U16)OffsetOf(X64_RegBlock, r14) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, r15) + 0, (U16)OffsetOf(X64_RegBlock, r15) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, rflags) + 0, (U16)OffsetOf(X64_RegBlock, rflags) + 0 + 4},
{(U16)OffsetOf(X64_RegBlock, rax) + 0, (U16)OffsetOf(X64_RegBlock, rax) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, rcx) + 0, (U16)OffsetOf(X64_RegBlock, rcx) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, rdx) + 0, (U16)OffsetOf(X64_RegBlock, rdx) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, rbx) + 0, (U16)OffsetOf(X64_RegBlock, rbx) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, rsi) + 0, (U16)OffsetOf(X64_RegBlock, rsi) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, rdi) + 0, (U16)OffsetOf(X64_RegBlock, rdi) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, rsp) + 0, (U16)OffsetOf(X64_RegBlock, rsp) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, rbp) + 0, (U16)OffsetOf(X64_RegBlock, rbp) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, rip) + 0, (U16)OffsetOf(X64_RegBlock, rip) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, r8) + 0, (U16)OffsetOf(X64_RegBlock, r8) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, r9) + 0, (U16)OffsetOf(X64_RegBlock, r9) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, r10) + 0, (U16)OffsetOf(X64_RegBlock, r10) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, r11) + 0, (U16)OffsetOf(X64_RegBlock, r11) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, r12) + 0, (U16)OffsetOf(X64_RegBlock, r12) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, r13) + 0, (U16)OffsetOf(X64_RegBlock, r13) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, r14) + 0, (U16)OffsetOf(X64_RegBlock, r14) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, r15) + 0, (U16)OffsetOf(X64_RegBlock, r15) + 0 + 2},
{(U16)OffsetOf(X64_RegBlock, rax) + 0, (U16)OffsetOf(X64_RegBlock, rax) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, rcx) + 0, (U16)OffsetOf(X64_RegBlock, rcx) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, rdx) + 0, (U16)OffsetOf(X64_RegBlock, rdx) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, rbx) + 0, (U16)OffsetOf(X64_RegBlock, rbx) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, rsi) + 0, (U16)OffsetOf(X64_RegBlock, rsi) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, rdi) + 0, (U16)OffsetOf(X64_RegBlock, rdi) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, rbp) + 0, (U16)OffsetOf(X64_RegBlock, rbp) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, rsp) + 0, (U16)OffsetOf(X64_RegBlock, rsp) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, r8) + 0, (U16)OffsetOf(X64_RegBlock, r8) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, r9) + 0, (U16)OffsetOf(X64_RegBlock, r9) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, r10) + 0, (U16)OffsetOf(X64_RegBlock, r10) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, r11) + 0, (U16)OffsetOf(X64_RegBlock, r11) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, r12) + 0, (U16)OffsetOf(X64_RegBlock, r12) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, r13) + 0, (U16)OffsetOf(X64_RegBlock, r13) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, r14) + 0, (U16)OffsetOf(X64_RegBlock, r14) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, r15) + 0, (U16)OffsetOf(X64_RegBlock, r15) + 0 + 1},
{(U16)OffsetOf(X64_RegBlock, rax) + 1, (U16)OffsetOf(X64_RegBlock, rax) + 1 + 1},
{(U16)OffsetOf(X64_RegBlock, rcx) + 1, (U16)OffsetOf(X64_RegBlock, rcx) + 1 + 1},
{(U16)OffsetOf(X64_RegBlock, rdx) + 1, (U16)OffsetOf(X64_RegBlock, rdx) + 1 + 1},
{(U16)OffsetOf(X64_RegBlock, rbx) + 1, (U16)OffsetOf(X64_RegBlock, rbx) + 1 + 1},
{(U16)OffsetOf(X64_RegBlock, zmm0) + 0, (U16)OffsetOf(X64_RegBlock, zmm0) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm1) + 0, (U16)OffsetOf(X64_RegBlock, zmm1) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm2) + 0, (U16)OffsetOf(X64_RegBlock, zmm2) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm3) + 0, (U16)OffsetOf(X64_RegBlock, zmm3) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm4) + 0, (U16)OffsetOf(X64_RegBlock, zmm4) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm5) + 0, (U16)OffsetOf(X64_RegBlock, zmm5) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm6) + 0, (U16)OffsetOf(X64_RegBlock, zmm6) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm7) + 0, (U16)OffsetOf(X64_RegBlock, zmm7) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm8) + 0, (U16)OffsetOf(X64_RegBlock, zmm8) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm9) + 0, (U16)OffsetOf(X64_RegBlock, zmm9) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm10) + 0, (U16)OffsetOf(X64_RegBlock, zmm10) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm11) + 0, (U16)OffsetOf(X64_RegBlock, zmm11) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm12) + 0, (U16)OffsetOf(X64_RegBlock, zmm12) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm13) + 0, (U16)OffsetOf(X64_RegBlock, zmm13) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm14) + 0, (U16)OffsetOf(X64_RegBlock, zmm14) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm15) + 0, (U16)OffsetOf(X64_RegBlock, zmm15) + 0 + 16},
{(U16)OffsetOf(X64_RegBlock, zmm0) + 0, (U16)OffsetOf(X64_RegBlock, zmm0) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm1) + 0, (U16)OffsetOf(X64_RegBlock, zmm1) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm2) + 0, (U16)OffsetOf(X64_RegBlock, zmm2) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm3) + 0, (U16)OffsetOf(X64_RegBlock, zmm3) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm4) + 0, (U16)OffsetOf(X64_RegBlock, zmm4) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm5) + 0, (U16)OffsetOf(X64_RegBlock, zmm5) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm6) + 0, (U16)OffsetOf(X64_RegBlock, zmm6) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm7) + 0, (U16)OffsetOf(X64_RegBlock, zmm7) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm8) + 0, (U16)OffsetOf(X64_RegBlock, zmm8) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm9) + 0, (U16)OffsetOf(X64_RegBlock, zmm9) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm10) + 0, (U16)OffsetOf(X64_RegBlock, zmm10) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm11) + 0, (U16)OffsetOf(X64_RegBlock, zmm11) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm12) + 0, (U16)OffsetOf(X64_RegBlock, zmm12) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm13) + 0, (U16)OffsetOf(X64_RegBlock, zmm13) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm14) + 0, (U16)OffsetOf(X64_RegBlock, zmm14) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, zmm15) + 0, (U16)OffsetOf(X64_RegBlock, zmm15) + 0 + 32},
{(U16)OffsetOf(X64_RegBlock, st0) + 0, (U16)OffsetOf(X64_RegBlock, st0) + 0 + 8},
{(U16)OffsetOf(X64_RegBlock, st1) + 0, (U16)OffsetOf(X64_RegBlock, st1) + 0 + 8},
{(U16)OffsetOf(X64_RegBlock, st2) + 0, (U16)OffsetOf(X64_RegBlock, st2) + 0 + 8},
{(U16)OffsetOf(X64_RegBlock, st3) + 0, (U16)OffsetOf(X64_RegBlock, st3) + 0 + 8},
{(U16)OffsetOf(X64_RegBlock, st4) + 0, (U16)OffsetOf(X64_RegBlock, st4) + 0 + 8},
{(U16)OffsetOf(X64_RegBlock, st5) + 0, (U16)OffsetOf(X64_RegBlock, st5) + 0 + 8},
{(U16)OffsetOf(X64_RegBlock, st6) + 0, (U16)OffsetOf(X64_RegBlock, st6) + 0 + 8},
{(U16)OffsetOf(X64_RegBlock, st7) + 0, (U16)OffsetOf(X64_RegBlock, st7) + 0 + 8},
};
C_LINKAGE_END
+310
View File
@@ -0,0 +1,310 @@
// Copyright (c) Epic Games Tools
// Licensed under the MIT license (https://opensource.org/license/mit/)
//- GENERATED CODE
#ifndef X64_META_H
#define X64_META_H
typedef enum X64_RegCode
{
X64_RegCode_nil,
X64_RegCode_rax,
X64_RegCode_rcx,
X64_RegCode_rdx,
X64_RegCode_rbx,
X64_RegCode_rsp,
X64_RegCode_rbp,
X64_RegCode_rsi,
X64_RegCode_rdi,
X64_RegCode_r8,
X64_RegCode_r9,
X64_RegCode_r10,
X64_RegCode_r11,
X64_RegCode_r12,
X64_RegCode_r13,
X64_RegCode_r14,
X64_RegCode_r15,
X64_RegCode_fsbase,
X64_RegCode_gsbase,
X64_RegCode_rip,
X64_RegCode_rflags,
X64_RegCode_dr0,
X64_RegCode_dr1,
X64_RegCode_dr2,
X64_RegCode_dr3,
X64_RegCode_dr4,
X64_RegCode_dr5,
X64_RegCode_dr6,
X64_RegCode_dr7,
X64_RegCode_st0,
X64_RegCode_st1,
X64_RegCode_st2,
X64_RegCode_st3,
X64_RegCode_st4,
X64_RegCode_st5,
X64_RegCode_st6,
X64_RegCode_st7,
X64_RegCode_fcw,
X64_RegCode_fsw,
X64_RegCode_ftw,
X64_RegCode_fop,
X64_RegCode_fcs,
X64_RegCode_fds,
X64_RegCode_fip,
X64_RegCode_fdp,
X64_RegCode_mxcsr,
X64_RegCode_mxcsr_mask,
X64_RegCode_ss,
X64_RegCode_cs,
X64_RegCode_ds,
X64_RegCode_es,
X64_RegCode_fs,
X64_RegCode_gs,
X64_RegCode_zmm0,
X64_RegCode_zmm1,
X64_RegCode_zmm2,
X64_RegCode_zmm3,
X64_RegCode_zmm4,
X64_RegCode_zmm5,
X64_RegCode_zmm6,
X64_RegCode_zmm7,
X64_RegCode_zmm8,
X64_RegCode_zmm9,
X64_RegCode_zmm10,
X64_RegCode_zmm11,
X64_RegCode_zmm12,
X64_RegCode_zmm13,
X64_RegCode_zmm14,
X64_RegCode_zmm15,
X64_RegCode_zmm16,
X64_RegCode_zmm17,
X64_RegCode_zmm18,
X64_RegCode_zmm19,
X64_RegCode_zmm20,
X64_RegCode_zmm21,
X64_RegCode_zmm22,
X64_RegCode_zmm23,
X64_RegCode_zmm24,
X64_RegCode_zmm25,
X64_RegCode_zmm26,
X64_RegCode_zmm27,
X64_RegCode_zmm28,
X64_RegCode_zmm29,
X64_RegCode_zmm30,
X64_RegCode_zmm31,
X64_RegCode_k0,
X64_RegCode_k1,
X64_RegCode_k2,
X64_RegCode_k3,
X64_RegCode_k4,
X64_RegCode_k5,
X64_RegCode_k6,
X64_RegCode_k7,
X64_RegCode_cetmsr,
X64_RegCode_cetssp,
X64_RegCode_eax,
X64_RegCode_ecx,
X64_RegCode_edx,
X64_RegCode_ebx,
X64_RegCode_esp,
X64_RegCode_ebp,
X64_RegCode_esi,
X64_RegCode_edi,
X64_RegCode_r8d,
X64_RegCode_r9d,
X64_RegCode_r10d,
X64_RegCode_r11d,
X64_RegCode_r12d,
X64_RegCode_r13d,
X64_RegCode_r14d,
X64_RegCode_r15d,
X64_RegCode_eflags,
X64_RegCode_ax,
X64_RegCode_cx,
X64_RegCode_dx,
X64_RegCode_bx,
X64_RegCode_si,
X64_RegCode_di,
X64_RegCode_sp,
X64_RegCode_bp,
X64_RegCode_ip,
X64_RegCode_r8w,
X64_RegCode_r9w,
X64_RegCode_r10w,
X64_RegCode_r11w,
X64_RegCode_r12w,
X64_RegCode_r13w,
X64_RegCode_r14w,
X64_RegCode_r15w,
X64_RegCode_al,
X64_RegCode_cl,
X64_RegCode_dl,
X64_RegCode_bl,
X64_RegCode_sil,
X64_RegCode_dil,
X64_RegCode_bpl,
X64_RegCode_spl,
X64_RegCode_r8b,
X64_RegCode_r9b,
X64_RegCode_r10b,
X64_RegCode_r11b,
X64_RegCode_r12b,
X64_RegCode_r13b,
X64_RegCode_r14b,
X64_RegCode_r15b,
X64_RegCode_ah,
X64_RegCode_ch,
X64_RegCode_dh,
X64_RegCode_bh,
X64_RegCode_xmm0,
X64_RegCode_xmm1,
X64_RegCode_xmm2,
X64_RegCode_xmm3,
X64_RegCode_xmm4,
X64_RegCode_xmm5,
X64_RegCode_xmm6,
X64_RegCode_xmm7,
X64_RegCode_xmm8,
X64_RegCode_xmm9,
X64_RegCode_xmm10,
X64_RegCode_xmm11,
X64_RegCode_xmm12,
X64_RegCode_xmm13,
X64_RegCode_xmm14,
X64_RegCode_xmm15,
X64_RegCode_ymm0,
X64_RegCode_ymm1,
X64_RegCode_ymm2,
X64_RegCode_ymm3,
X64_RegCode_ymm4,
X64_RegCode_ymm5,
X64_RegCode_ymm6,
X64_RegCode_ymm7,
X64_RegCode_ymm8,
X64_RegCode_ymm9,
X64_RegCode_ymm10,
X64_RegCode_ymm11,
X64_RegCode_ymm12,
X64_RegCode_ymm13,
X64_RegCode_ymm14,
X64_RegCode_ymm15,
X64_RegCode_mm0,
X64_RegCode_mm1,
X64_RegCode_mm2,
X64_RegCode_mm3,
X64_RegCode_mm4,
X64_RegCode_mm5,
X64_RegCode_mm6,
X64_RegCode_mm7,
X64_RegCode_COUNT,
} X64_RegCode;
typedef struct X64_RegBlock X64_RegBlock;
struct X64_RegBlock
{
U64 rax;
U64 rcx;
U64 rdx;
U64 rbx;
U64 rsp;
U64 rbp;
U64 rsi;
U64 rdi;
U64 r8;
U64 r9;
U64 r10;
U64 r11;
U64 r12;
U64 r13;
U64 r14;
U64 r15;
U64 fsbase;
U64 gsbase;
U64 rip;
U64 rflags;
U64 dr0;
U64 dr1;
U64 dr2;
U64 dr3;
U64 dr4;
U64 dr5;
U64 dr6;
U64 dr7;
U80 st0;
U80 st1;
U80 st2;
U80 st3;
U80 st4;
U80 st5;
U80 st6;
U80 st7;
U16 fcw;
U16 fsw;
U8 ftw;
U16 fop;
U16 fcs;
U16 fds;
U64 fip;
U64 fdp;
U32 mxcsr;
U32 mxcsr_mask;
U16 ss;
U16 cs;
U16 ds;
U16 es;
U16 fs;
U16 gs;
U512 zmm0;
U512 zmm1;
U512 zmm2;
U512 zmm3;
U512 zmm4;
U512 zmm5;
U512 zmm6;
U512 zmm7;
U512 zmm8;
U512 zmm9;
U512 zmm10;
U512 zmm11;
U512 zmm12;
U512 zmm13;
U512 zmm14;
U512 zmm15;
U512 zmm16;
U512 zmm17;
U512 zmm18;
U512 zmm19;
U512 zmm20;
U512 zmm21;
U512 zmm22;
U512 zmm23;
U512 zmm24;
U512 zmm25;
U512 zmm26;
U512 zmm27;
U512 zmm28;
U512 zmm29;
U512 zmm30;
U512 zmm31;
U64 k0;
U64 k1;
U64 k2;
U64 k3;
U64 k4;
U64 k5;
U64 k6;
U64 k7;
U64 cetmsr;
U64 cetssp;
};
C_LINKAGE_BEGIN
extern B8 x64_reg_code_is_vector_table[189];
extern String8 x64_reg_code_name_table[189];
extern U8 x64_reg_code_base_table[189];
extern Rng1U16 x64_reg_code_rng_table[189];
C_LINKAGE_END
#endif // X64_META_H
+14 -1
View File
@@ -1,6 +1,14 @@
// Copyright (c) Epic Games Tools
// Licensed under the MIT license (https://opensource.org/license/mit/)
////////////////////////////////
//~ rjf: Generated
#include "x64/generated/x64.meta.c"
////////////////////////////////
//~ cpuid
internal void
x64_cpuid(U32 leaf, U32 *eax, U32 *ebx, U32 *ecx, U32 *edx)
{
@@ -43,6 +51,9 @@ x64_cpuid_ex(U32 leaf, U32 sub_leaf, U32 *eax, U32 *ebx, U32 *ecx, U32 *edx)
#endif
}
////////////////////////////////
//~ fxsave/xsave
internal B32
x64_is_xsave_supported(void)
{
@@ -114,6 +125,9 @@ x64_get_xsave_layout(U64 xcr0)
return xsave_layout;
}
////////////////////////////////
//~ Debug Control Register
internal void
x64_set_debug_break(U64 *drs, U64 trap_idx, U64 addr, U64 size, X64_BreakpointType bp_type, X64_DebugBreakType break_type)
{
@@ -181,4 +195,3 @@ x64_set_debug_break(U64 *drs, U64 trap_idx, U64 addr, U64 size, X64_BreakpointTy
default: { InvalidPath; }
}
}
+11 -7
View File
@@ -177,30 +177,35 @@ typedef enum X64_DebugControlFlags
X64_DebugControlFlag_L1 = (1 << 2),
X64_DebugControlFlag_L2 = (1 << 4),
X64_DebugControlFlag_L3 = (1 << 6),
X64_DebugControlFlag_G0 = (1 << 1),
X64_DebugControlFlag_G1 = (1 << 3),
X64_DebugControlFlag_G3 = (1 << 5),
X64_DebugControlFlag_G4 = (1 << 7),
X64_DebugControlFlag_LE = (1 << 8),
X64_DebugControlFlag_GE = (1 << 9),
X64_DebugControlFlag_RTM = (1 << 11),
X64_DebugControlFlag_GD = (1 << 13),
X64_DebugControlFlag_RW0 = (3 << 16),
X64_DebugControlFlag_RW1 = (3 << 20),
X64_DebugControlFlag_RW2 = (3 << 24),
X64_DebugControlFlag_FW3 = (3 << 26),
X64_DebugControlFlag_LEN0 = (3 << 18),
X64_DebugControlFlag_LEN1 = (3 << 22),
X64_DebugControlFlag_LEN2 = (3 << 26),
X64_DebugControlFlag_LEN3 = (3 << 30),
} X64_DebugControlFlags;
////////////////////////////////
//~ rjf: Generated
#include "x64/generated/x64.meta.h"
////////////////////////////////
//~ cpuid
@@ -222,4 +227,3 @@ internal X64_XSaveLayout x64_get_xsave_layout(U64 xcr0);
internal void x64_set_debug_break(U64 *drs, U64 trap_idx, U64 addr, U64 size, X64_BreakpointType bp_type, X64_DebugBreakType break_type);
#endif // BASE_X64_H
+231
View File
@@ -0,0 +1,231 @@
// Copyright (c) Epic Games Tools
// Licensed under the MIT license (https://opensource.org/license/mit/)
@table(name base off size is_vector has_rdi has_dwarf)
X64_RegTable:
{
{nil - 0 0 - x - }
{rax - 0 8 - x x }
{rcx - 0 8 - x x }
{rdx - 0 8 - x x }
{rbx - 0 8 - x x }
{rsp - 0 8 - x x }
{rbp - 0 8 - x x }
{rsi - 0 8 - x x }
{rdi - 0 8 - x x }
{r8 - 0 8 - x x }
{r9 - 0 8 - x x }
{r10 - 0 8 - x x }
{r11 - 0 8 - x x }
{r12 - 0 8 - x x }
{r13 - 0 8 - x x }
{r14 - 0 8 - x x }
{r15 - 0 8 - x x }
{fsbase - 0 8 - x x }
{gsbase - 0 8 - x x }
{rip - 0 8 - x x }
{rflags - 0 8 - x x }
{dr0 - 0 8 - x - }
{dr1 - 0 8 - x - }
{dr2 - 0 8 - x - }
{dr3 - 0 8 - x - }
{dr4 - 0 8 - x - }
{dr5 - 0 8 - x - }
{dr6 - 0 8 - x - }
{dr7 - 0 8 - x - }
{st0 - 0 10 - x x }
{st1 - 0 10 - x x }
{st2 - 0 10 - x x }
{st3 - 0 10 - x x }
{st4 - 0 10 - x x }
{st5 - 0 10 - x x }
{st6 - 0 10 - x x }
{st7 - 0 10 - x x }
{fcw - 0 2 - x - }
{fsw - 0 2 - x - }
{ftw - 0 1 - x - }
{fop - 0 2 - x - }
{fcs - 0 2 - x - }
{fds - 0 2 - x - }
{fip - 0 8 - x - }
{fdp - 0 8 - x - }
{mxcsr - 0 4 - x - }
{mxcsr_mask - 0 4 - x - }
{ss - 0 2 - x x }
{cs - 0 2 - x x }
{ds - 0 2 - x x }
{es - 0 2 - x x }
{fs - 0 2 - x x }
{gs - 0 2 - x x }
{zmm0 - 0 64 x x x }
{zmm1 - 0 64 x x x }
{zmm2 - 0 64 x x x }
{zmm3 - 0 64 x x x }
{zmm4 - 0 64 x x x }
{zmm5 - 0 64 x x x }
{zmm6 - 0 64 x x x }
{zmm7 - 0 64 x x x }
{zmm8 - 0 64 x x x }
{zmm9 - 0 64 x x x }
{zmm10 - 0 64 x x x }
{zmm11 - 0 64 x x x }
{zmm12 - 0 64 x x x }
{zmm13 - 0 64 x x x }
{zmm14 - 0 64 x x x }
{zmm15 - 0 64 x x x }
{zmm16 - 0 64 x x x }
{zmm17 - 0 64 x x x }
{zmm18 - 0 64 x x x }
{zmm19 - 0 64 x x x }
{zmm20 - 0 64 x x x }
{zmm21 - 0 64 x x x }
{zmm22 - 0 64 x x x }
{zmm23 - 0 64 x x x }
{zmm24 - 0 64 x x x }
{zmm25 - 0 64 x x x }
{zmm26 - 0 64 x x x }
{zmm27 - 0 64 x x x }
{zmm28 - 0 64 x x x }
{zmm29 - 0 64 x x x }
{zmm30 - 0 64 x x x }
{zmm31 - 0 64 x x x }
{k0 - 0 8 - x - }
{k1 - 0 8 - x - }
{k2 - 0 8 - x - }
{k3 - 0 8 - x - }
{k4 - 0 8 - x - }
{k5 - 0 8 - x - }
{k6 - 0 8 - x - }
{k7 - 0 8 - x - }
{cetmsr - 0 8 - x - }
{cetssp - 0 8 - x - }
//-
//- aliases
//-
{eax rax 0 4 - - - }
{ecx rcx 0 4 - - - }
{edx rdx 0 4 - - - }
{ebx rbx 0 4 - - - }
{esp rsp 0 4 - - - }
{ebp rbp 0 4 - - - }
{esi rsi 0 4 - - - }
{edi rdi 0 4 - - - }
{r8d r8 0 4 - - - }
{r9d r9 0 4 - - - }
{r10d r10 0 4 - - - }
{r11d r11 0 4 - - - }
{r12d r12 0 4 - - - }
{r13d r13 0 4 - - - }
{r14d r14 0 4 - - - }
{r15d r15 0 4 - - - }
{eflags rflags 0 4 - - - }
{ax rax 0 2 - - - }
{cx rcx 0 2 - - - }
{dx rdx 0 2 - - - }
{bx rbx 0 2 - - - }
{si rsi 0 2 - - - }
{di rdi 0 2 - - - }
{sp rsp 0 2 - - - }
{bp rbp 0 2 - - - }
{ip rip 0 2 - - - }
{r8w r8 0 2 - - - }
{r9w r9 0 2 - - - }
{r10w r10 0 2 - - - }
{r11w r11 0 2 - - - }
{r12w r12 0 2 - - - }
{r13w r13 0 2 - - - }
{r14w r14 0 2 - - - }
{r15w r15 0 2 - - - }
{al rax 0 1 - - - }
{cl rcx 0 1 - - - }
{dl rdx 0 1 - - - }
{bl rbx 0 1 - - - }
{sil rsi 0 1 - - - }
{dil rdi 0 1 - - - }
{bpl rbp 0 1 - - - }
{spl rsp 0 1 - - - }
{r8b r8 0 1 - - - }
{r9b r9 0 1 - - - }
{r10b r10 0 1 - - - }
{r11b r11 0 1 - - - }
{r12b r12 0 1 - - - }
{r13b r13 0 1 - - - }
{r14b r14 0 1 - - - }
{r15b r15 0 1 - - - }
{ah rax 1 1 - - - }
{ch rcx 1 1 - - - }
{dh rdx 1 1 - - - }
{bh rbx 1 1 - - - }
{xmm0 zmm0 0 16 x - - }
{xmm1 zmm1 0 16 x - - }
{xmm2 zmm2 0 16 x - - }
{xmm3 zmm3 0 16 x - - }
{xmm4 zmm4 0 16 x - - }
{xmm5 zmm5 0 16 x - - }
{xmm6 zmm6 0 16 x - - }
{xmm7 zmm7 0 16 x - - }
{xmm8 zmm8 0 16 x - - }
{xmm9 zmm9 0 16 x - - }
{xmm10 zmm10 0 16 x - - }
{xmm11 zmm11 0 16 x - - }
{xmm12 zmm12 0 16 x - - }
{xmm13 zmm13 0 16 x - - }
{xmm14 zmm14 0 16 x - - }
{xmm15 zmm15 0 16 x - - }
{ymm0 zmm0 0 32 x - - }
{ymm1 zmm1 0 32 x - - }
{ymm2 zmm2 0 32 x - - }
{ymm3 zmm3 0 32 x - - }
{ymm4 zmm4 0 32 x - - }
{ymm5 zmm5 0 32 x - - }
{ymm6 zmm6 0 32 x - - }
{ymm7 zmm7 0 32 x - - }
{ymm8 zmm8 0 32 x - - }
{ymm9 zmm9 0 32 x - - }
{ymm10 zmm10 0 32 x - - }
{ymm11 zmm11 0 32 x - - }
{ymm12 zmm12 0 32 x - - }
{ymm13 zmm13 0 32 x - - }
{ymm14 zmm14 0 32 x - - }
{ymm15 zmm15 0 32 x - - }
{mm0 st0 0 8 x - x }
{mm1 st1 0 8 x - x }
{mm2 st2 0 8 x - x }
{mm3 st3 0 8 x - x }
{mm4 st4 0 8 x - x }
{mm5 st5 0 8 x - x }
{mm6 st6 0 8 x - x }
{mm7 st7 0 8 x - x }
}
@enum X64_RegCode:
{
@expand(X64_RegTable a) `$(a.name)`,
COUNT,
}
@struct X64_RegBlock:
{
@expand(X64_RegTable a) `$(a.name != 'nil' && a.base == '-' -> 'U' .. a.size*8 .. ' ' .. a.name)`,
}
@data(B8) x64_reg_code_is_vector_table:
{
@expand(X64_RegTable a) `$(a.is_vector == 'x' -> '1')$(a.is_vector != 'x' -> '0')`;
}
@data(String8) x64_reg_code_name_table:
{
@expand(X64_RegTable a) `str8_lit_comp("$(a.name)")`;
}
@data(U8) x64_reg_code_base_table:
{
@expand(X64_RegTable a) `$(a.base != '-' -> "X64_RegCode_" .. a.base)$(a.base == '-' -> 0)`;
}
@data(Rng1U16) x64_reg_code_rng_table:
{
`{0}`,
@expand(X64_RegTable a) `$(a.name != 'nil' && a.base == '-'-> ("{(U16)OffsetOf(X64_RegBlock, " .. a.name .. "), (U16)OffsetOf(X64_RegBlock, " .. a.name .. ") + " .. a.size .. "}"))$(a.name != 'nil' && a.base != '-' -> ("{(U16)OffsetOf(X64_RegBlock, " .. a.base .. ") + " .. a.off .. ", (U16)OffsetOf(X64_RegBlock, " .. a.base .. ") + " .. a.off .. " + " .. a.size .. "}"))`,
}