smallworld-re 1.0.3__py3-none-any.whl → 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- smallworld/analyses/__init__.py +8 -0
- smallworld/analyses/analysis.py +8 -67
- smallworld/analyses/code_coverage.py +1 -2
- smallworld/analyses/colorizer.py +301 -534
- smallworld/analyses/colorizer_def_use.py +217 -0
- smallworld/analyses/colorizer_summary.py +173 -83
- smallworld/analyses/field_detection/field_analysis.py +7 -8
- smallworld/analyses/field_detection/hints.py +1 -1
- smallworld/analyses/field_detection/malloc.py +2 -2
- smallworld/analyses/trace_execution.py +160 -0
- smallworld/analyses/trace_execution_types.py +42 -0
- smallworld/analyses/unstable/angr/divergence.py +1 -2
- smallworld/analyses/unstable/angr/model.py +5 -6
- smallworld/analyses/unstable/angr_nwbt.py +3 -4
- smallworld/analyses/unstable/code_coverage.py +2 -3
- smallworld/analyses/unstable/code_reachable.py +2 -3
- smallworld/analyses/unstable/control_flow_tracer.py +2 -3
- smallworld/analyses/unstable/pointer_finder.py +2 -3
- smallworld/analyses/unstable/utils/tui.py +71 -0
- smallworld/emulators/__init__.py +3 -1
- smallworld/emulators/angr/angr.py +30 -9
- smallworld/emulators/angr/machdefs/__init__.py +2 -0
- smallworld/emulators/angr/machdefs/aarch64.py +1 -1
- smallworld/emulators/angr/machdefs/amd64.py +0 -4
- smallworld/emulators/angr/machdefs/arm.py +0 -2
- smallworld/emulators/angr/machdefs/i386.py +0 -2
- smallworld/emulators/angr/machdefs/loongarch.py +340 -0
- smallworld/emulators/angr/machdefs/machdef.py +1 -8
- smallworld/emulators/angr/machdefs/mips.py +0 -2
- smallworld/emulators/angr/machdefs/mips64.py +0 -2
- smallworld/emulators/angr/machdefs/ppc.py +1 -2
- smallworld/emulators/angr/machdefs/riscv.py +8 -10
- smallworld/emulators/angr/machdefs/xtensa.py +7 -4
- smallworld/emulators/emulator.py +22 -0
- smallworld/emulators/ghidra/__init__.py +37 -0
- smallworld/emulators/ghidra/ghidra.py +513 -0
- smallworld/emulators/ghidra/machdefs/__init__.py +31 -0
- smallworld/emulators/ghidra/machdefs/aarch64.py +289 -0
- smallworld/emulators/ghidra/machdefs/amd64.py +185 -0
- smallworld/emulators/ghidra/machdefs/arm.py +370 -0
- smallworld/emulators/ghidra/machdefs/i386.py +109 -0
- smallworld/emulators/ghidra/machdefs/loongarch.py +162 -0
- smallworld/emulators/ghidra/machdefs/machdef.py +81 -0
- smallworld/emulators/ghidra/machdefs/mips.py +163 -0
- smallworld/emulators/ghidra/machdefs/mips64.py +186 -0
- smallworld/emulators/ghidra/machdefs/ppc.py +98 -0
- smallworld/emulators/ghidra/machdefs/riscv.py +208 -0
- smallworld/emulators/ghidra/machdefs/xtensa.py +21 -0
- smallworld/emulators/ghidra/typing.py +28 -0
- smallworld/emulators/hookable.py +18 -4
- smallworld/emulators/panda/machdefs/__init__.py +2 -2
- smallworld/emulators/panda/machdefs/aarch64.py +186 -11
- smallworld/emulators/panda/machdefs/amd64.py +103 -11
- smallworld/emulators/panda/machdefs/arm.py +216 -20
- smallworld/emulators/panda/machdefs/i386.py +30 -7
- smallworld/emulators/panda/machdefs/machdef.py +9 -16
- smallworld/emulators/panda/machdefs/mips.py +49 -5
- smallworld/emulators/panda/machdefs/mips64.py +57 -5
- smallworld/emulators/panda/machdefs/ppc.py +38 -13
- smallworld/emulators/panda/panda.py +146 -44
- smallworld/emulators/unicorn/__init__.py +2 -0
- smallworld/emulators/unicorn/machdefs/aarch64.py +253 -264
- smallworld/emulators/unicorn/machdefs/amd64.py +254 -259
- smallworld/emulators/unicorn/machdefs/arm.py +200 -212
- smallworld/emulators/unicorn/machdefs/i386.py +84 -90
- smallworld/emulators/unicorn/machdefs/machdef.py +2 -23
- smallworld/emulators/unicorn/machdefs/mips.py +127 -135
- smallworld/emulators/unicorn/unicorn.py +52 -13
- smallworld/helpers.py +4 -19
- smallworld/hinting/hinting.py +22 -192
- smallworld/hinting/hints.py +50 -18
- smallworld/instructions/bsid.py +8 -8
- smallworld/logging.py +4 -2
- smallworld/platforms/__init__.py +12 -0
- smallworld/platforms/defs/__init__.py +36 -0
- smallworld/platforms/defs/aarch64.py +450 -0
- smallworld/platforms/defs/amd64.py +463 -0
- smallworld/platforms/defs/arm.py +519 -0
- smallworld/platforms/defs/i386.py +258 -0
- smallworld/platforms/defs/loongarch.py +270 -0
- smallworld/platforms/defs/mips.py +321 -0
- smallworld/platforms/defs/mips64.py +313 -0
- smallworld/platforms/defs/platformdef.py +97 -0
- smallworld/platforms/defs/powerpc.py +259 -0
- smallworld/platforms/defs/riscv.py +257 -0
- smallworld/platforms/defs/xtensa.py +96 -0
- smallworld/{platforms.py → platforms/platforms.py} +3 -0
- smallworld/state/cpus/__init__.py +2 -0
- smallworld/state/cpus/aarch64.py +0 -9
- smallworld/state/cpus/amd64.py +6 -28
- smallworld/state/cpus/arm.py +0 -11
- smallworld/state/cpus/cpu.py +0 -11
- smallworld/state/cpus/i386.py +0 -7
- smallworld/state/cpus/loongarch.py +299 -0
- smallworld/state/cpus/mips.py +4 -47
- smallworld/state/cpus/mips64.py +18 -58
- smallworld/state/cpus/powerpc.py +2 -9
- smallworld/state/cpus/riscv.py +1 -11
- smallworld/state/cpus/xtensa.py +0 -5
- smallworld/state/memory/code.py +38 -2
- smallworld/state/memory/elf/__init__.py +5 -1
- smallworld/state/memory/elf/coredump/__init__.py +3 -0
- smallworld/state/memory/elf/coredump/coredump.py +46 -0
- smallworld/state/memory/elf/coredump/prstatus/__init__.py +27 -0
- smallworld/state/memory/elf/coredump/prstatus/aarch64.py +46 -0
- smallworld/state/memory/elf/coredump/prstatus/amd64.py +40 -0
- smallworld/state/memory/elf/coredump/prstatus/arm.py +53 -0
- smallworld/state/memory/elf/coredump/prstatus/i386.py +30 -0
- smallworld/state/memory/elf/coredump/prstatus/mips.py +55 -0
- smallworld/state/memory/elf/coredump/prstatus/mips64.py +57 -0
- smallworld/state/memory/elf/coredump/prstatus/ppc.py +82 -0
- smallworld/state/memory/elf/coredump/prstatus/prstatus.py +129 -0
- smallworld/state/memory/elf/elf.py +211 -57
- smallworld/state/memory/elf/register_state.py +36 -0
- smallworld/state/memory/elf/rela/__init__.py +2 -0
- smallworld/state/memory/elf/rela/aarch64.py +3 -1
- smallworld/state/memory/elf/rela/amd64.py +4 -2
- smallworld/state/memory/elf/rela/arm.py +4 -2
- smallworld/state/memory/elf/rela/i386.py +4 -2
- smallworld/state/memory/elf/rela/loongarch.py +32 -0
- smallworld/state/memory/elf/rela/mips.py +39 -18
- smallworld/state/memory/elf/rela/ppc.py +31 -14
- smallworld/state/memory/elf/structs.py +3 -0
- smallworld/state/memory/heap.py +2 -2
- smallworld/state/memory/memory.py +18 -0
- smallworld/state/memory/pe/__init__.py +3 -0
- smallworld/state/memory/pe/pe.py +361 -0
- smallworld/state/memory/pe/structs.py +60 -0
- smallworld/state/memory/stack/__init__.py +2 -0
- smallworld/state/memory/stack/loongarch.py +26 -0
- smallworld/state/models/__init__.py +29 -2
- smallworld/state/models/aarch64/__init__.py +1 -0
- smallworld/state/models/aarch64/systemv/__init__.py +6 -0
- smallworld/state/models/aarch64/systemv/c99/__init__.py +12 -0
- smallworld/state/models/aarch64/systemv/c99/signal.py +16 -0
- smallworld/state/models/aarch64/systemv/c99/stdio.py +265 -0
- smallworld/state/models/aarch64/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/aarch64/systemv/c99/string.py +139 -0
- smallworld/state/models/aarch64/systemv/c99/time.py +61 -0
- smallworld/state/models/aarch64/systemv/posix/__init__.py +6 -0
- smallworld/state/models/aarch64/systemv/posix/libgen.py +16 -0
- smallworld/state/models/aarch64/systemv/posix/signal.py +157 -0
- smallworld/state/models/aarch64/systemv/systemv.py +80 -0
- smallworld/state/models/amd64/__init__.py +1 -0
- smallworld/state/models/amd64/systemv/__init__.py +6 -0
- smallworld/state/models/amd64/systemv/c99/__init__.py +12 -0
- smallworld/state/models/amd64/systemv/c99/signal.py +16 -0
- smallworld/state/models/amd64/systemv/c99/stdio.py +265 -0
- smallworld/state/models/amd64/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/amd64/systemv/c99/string.py +139 -0
- smallworld/state/models/amd64/systemv/c99/time.py +61 -0
- smallworld/state/models/amd64/systemv/posix/__init__.py +6 -0
- smallworld/state/models/amd64/systemv/posix/libgen.py +16 -0
- smallworld/state/models/amd64/systemv/posix/signal.py +157 -0
- smallworld/state/models/amd64/systemv/systemv.py +78 -0
- smallworld/state/models/armel/__init__.py +1 -0
- smallworld/state/models/armel/systemv/__init__.py +6 -0
- smallworld/state/models/armel/systemv/c99/__init__.py +12 -0
- smallworld/state/models/armel/systemv/c99/signal.py +16 -0
- smallworld/state/models/armel/systemv/c99/stdio.py +265 -0
- smallworld/state/models/armel/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/armel/systemv/c99/string.py +139 -0
- smallworld/state/models/armel/systemv/c99/time.py +61 -0
- smallworld/state/models/armel/systemv/posix/__init__.py +6 -0
- smallworld/state/models/armel/systemv/posix/libgen.py +16 -0
- smallworld/state/models/armel/systemv/posix/signal.py +157 -0
- smallworld/state/models/armel/systemv/systemv.py +82 -0
- smallworld/state/models/armhf/__init__.py +1 -0
- smallworld/state/models/armhf/systemv/__init__.py +6 -0
- smallworld/state/models/armhf/systemv/c99/__init__.py +12 -0
- smallworld/state/models/armhf/systemv/c99/signal.py +16 -0
- smallworld/state/models/armhf/systemv/c99/stdio.py +265 -0
- smallworld/state/models/armhf/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/armhf/systemv/c99/string.py +139 -0
- smallworld/state/models/armhf/systemv/c99/time.py +61 -0
- smallworld/state/models/armhf/systemv/posix/__init__.py +6 -0
- smallworld/state/models/armhf/systemv/posix/libgen.py +16 -0
- smallworld/state/models/armhf/systemv/posix/signal.py +157 -0
- smallworld/state/models/armhf/systemv/systemv.py +77 -0
- smallworld/state/models/c99/__init__.py +12 -0
- smallworld/state/models/c99/fmt_print.py +915 -0
- smallworld/state/models/c99/fmt_scan.py +864 -0
- smallworld/state/models/c99/math.py +362 -0
- smallworld/state/models/c99/signal.py +71 -0
- smallworld/state/models/c99/stdio.py +1305 -0
- smallworld/state/models/c99/stdlib.py +595 -0
- smallworld/state/models/c99/string.py +674 -0
- smallworld/state/models/c99/time.py +340 -0
- smallworld/state/models/c99/utils.py +89 -0
- smallworld/state/models/cstd.py +759 -0
- smallworld/state/models/errno.py +581 -0
- smallworld/state/models/filedesc.py +515 -0
- smallworld/state/models/i386/__init__.py +1 -0
- smallworld/state/models/i386/systemv/__init__.py +6 -0
- smallworld/state/models/i386/systemv/c99/__init__.py +12 -0
- smallworld/state/models/i386/systemv/c99/signal.py +16 -0
- smallworld/state/models/i386/systemv/c99/stdio.py +265 -0
- smallworld/state/models/i386/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/i386/systemv/c99/string.py +139 -0
- smallworld/state/models/i386/systemv/c99/time.py +61 -0
- smallworld/state/models/i386/systemv/posix/__init__.py +6 -0
- smallworld/state/models/i386/systemv/posix/libgen.py +16 -0
- smallworld/state/models/i386/systemv/posix/signal.py +157 -0
- smallworld/state/models/i386/systemv/systemv.py +71 -0
- smallworld/state/models/loongarch64/__init__.py +1 -0
- smallworld/state/models/loongarch64/systemv/__init__.py +6 -0
- smallworld/state/models/loongarch64/systemv/c99/__init__.py +12 -0
- smallworld/state/models/loongarch64/systemv/c99/signal.py +16 -0
- smallworld/state/models/loongarch64/systemv/c99/stdio.py +265 -0
- smallworld/state/models/loongarch64/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/loongarch64/systemv/c99/string.py +139 -0
- smallworld/state/models/loongarch64/systemv/c99/time.py +61 -0
- smallworld/state/models/loongarch64/systemv/posix/__init__.py +6 -0
- smallworld/state/models/loongarch64/systemv/posix/libgen.py +16 -0
- smallworld/state/models/loongarch64/systemv/posix/signal.py +157 -0
- smallworld/state/models/loongarch64/systemv/systemv.py +83 -0
- smallworld/state/models/mips/__init__.py +1 -0
- smallworld/state/models/mips/systemv/__init__.py +6 -0
- smallworld/state/models/mips/systemv/c99/__init__.py +12 -0
- smallworld/state/models/mips/systemv/c99/signal.py +16 -0
- smallworld/state/models/mips/systemv/c99/stdio.py +265 -0
- smallworld/state/models/mips/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/mips/systemv/c99/string.py +139 -0
- smallworld/state/models/mips/systemv/c99/time.py +61 -0
- smallworld/state/models/mips/systemv/posix/__init__.py +6 -0
- smallworld/state/models/mips/systemv/posix/libgen.py +16 -0
- smallworld/state/models/mips/systemv/posix/signal.py +157 -0
- smallworld/state/models/mips/systemv/systemv.py +78 -0
- smallworld/state/models/mips64/__init__.py +1 -0
- smallworld/state/models/mips64/systemv/__init__.py +6 -0
- smallworld/state/models/mips64/systemv/c99/__init__.py +12 -0
- smallworld/state/models/mips64/systemv/c99/signal.py +16 -0
- smallworld/state/models/mips64/systemv/c99/stdio.py +265 -0
- smallworld/state/models/mips64/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/mips64/systemv/c99/string.py +139 -0
- smallworld/state/models/mips64/systemv/c99/time.py +61 -0
- smallworld/state/models/mips64/systemv/posix/__init__.py +6 -0
- smallworld/state/models/mips64/systemv/posix/libgen.py +16 -0
- smallworld/state/models/mips64/systemv/posix/signal.py +157 -0
- smallworld/state/models/mips64/systemv/systemv.py +98 -0
- smallworld/state/models/mips64el/__init__.py +1 -0
- smallworld/state/models/mips64el/systemv/__init__.py +6 -0
- smallworld/state/models/mips64el/systemv/c99/__init__.py +12 -0
- smallworld/state/models/mips64el/systemv/c99/signal.py +16 -0
- smallworld/state/models/mips64el/systemv/c99/stdio.py +265 -0
- smallworld/state/models/mips64el/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/mips64el/systemv/c99/string.py +139 -0
- smallworld/state/models/mips64el/systemv/c99/time.py +61 -0
- smallworld/state/models/mips64el/systemv/posix/__init__.py +6 -0
- smallworld/state/models/mips64el/systemv/posix/libgen.py +16 -0
- smallworld/state/models/mips64el/systemv/posix/signal.py +157 -0
- smallworld/state/models/mips64el/systemv/systemv.py +96 -0
- smallworld/state/models/mipsel/__init__.py +1 -0
- smallworld/state/models/mipsel/systemv/__init__.py +6 -0
- smallworld/state/models/mipsel/systemv/c99/__init__.py +12 -0
- smallworld/state/models/mipsel/systemv/c99/signal.py +16 -0
- smallworld/state/models/mipsel/systemv/c99/stdio.py +265 -0
- smallworld/state/models/mipsel/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/mipsel/systemv/c99/string.py +139 -0
- smallworld/state/models/mipsel/systemv/c99/time.py +61 -0
- smallworld/state/models/mipsel/systemv/posix/__init__.py +6 -0
- smallworld/state/models/mipsel/systemv/posix/libgen.py +16 -0
- smallworld/state/models/mipsel/systemv/posix/signal.py +157 -0
- smallworld/state/models/mipsel/systemv/systemv.py +78 -0
- smallworld/state/models/model.py +27 -2
- smallworld/state/models/posix/__init__.py +6 -0
- smallworld/state/models/posix/libgen.py +123 -0
- smallworld/state/models/posix/signal.py +690 -0
- smallworld/state/models/powerpc/__init__.py +1 -0
- smallworld/state/models/powerpc/systemv/__init__.py +6 -0
- smallworld/state/models/powerpc/systemv/c99/__init__.py +12 -0
- smallworld/state/models/powerpc/systemv/c99/signal.py +16 -0
- smallworld/state/models/powerpc/systemv/c99/stdio.py +265 -0
- smallworld/state/models/powerpc/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/powerpc/systemv/c99/string.py +139 -0
- smallworld/state/models/powerpc/systemv/c99/time.py +61 -0
- smallworld/state/models/powerpc/systemv/posix/__init__.py +6 -0
- smallworld/state/models/powerpc/systemv/posix/libgen.py +16 -0
- smallworld/state/models/powerpc/systemv/posix/signal.py +157 -0
- smallworld/state/models/powerpc/systemv/systemv.py +93 -0
- smallworld/state/models/riscv64/__init__.py +1 -0
- smallworld/state/models/riscv64/systemv/__init__.py +6 -0
- smallworld/state/models/riscv64/systemv/c99/__init__.py +12 -0
- smallworld/state/models/riscv64/systemv/c99/signal.py +16 -0
- smallworld/state/models/riscv64/systemv/c99/stdio.py +265 -0
- smallworld/state/models/riscv64/systemv/c99/stdlib.py +169 -0
- smallworld/state/models/riscv64/systemv/c99/string.py +139 -0
- smallworld/state/models/riscv64/systemv/c99/time.py +61 -0
- smallworld/state/models/riscv64/systemv/posix/__init__.py +6 -0
- smallworld/state/models/riscv64/systemv/posix/libgen.py +16 -0
- smallworld/state/models/riscv64/systemv/posix/signal.py +157 -0
- smallworld/state/models/riscv64/systemv/systemv.py +85 -0
- smallworld/state/state.py +65 -24
- smallworld/state/unstable/elf.py +16 -31
- smallworld/utils.py +6 -1
- {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/METADATA +74 -42
- smallworld_re-2.0.0.dist-info/RECORD +374 -0
- {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/WHEEL +1 -1
- smallworld/state/models/x86/__init__.py +0 -2
- smallworld/state/models/x86/microsoftcdecl.py +0 -35
- smallworld/state/models/x86/systemv.py +0 -240
- smallworld_re-1.0.3.dist-info/RECORD +0 -166
- /smallworld/state/models/{posix.py → _posix.py} +0 -0
- {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/entry_points.txt +0 -0
- {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/licenses/LICENSE.txt +0 -0
- {smallworld_re-1.0.3.dist-info → smallworld_re-2.0.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,463 @@
|
|
1
|
+
import capstone
|
2
|
+
|
3
|
+
from ..platforms import Architecture, Byteorder
|
4
|
+
from .platformdef import PlatformDef, RegisterAliasDef, RegisterDef
|
5
|
+
|
6
|
+
|
7
|
+
class AMD64BasePlatformDef(PlatformDef):
|
8
|
+
# Abstract platform def for AMD64
|
9
|
+
#
|
10
|
+
# AVX512 changes how the xmm and ymm registers are aliased.
|
11
|
+
# The new bases are incompatible, so we need two separate classes.
|
12
|
+
byteorder = Byteorder.LITTLE
|
13
|
+
|
14
|
+
address_size = 8
|
15
|
+
|
16
|
+
capstone_arch = capstone.CS_ARCH_X86
|
17
|
+
capstone_mode = capstone.CS_MODE_64
|
18
|
+
|
19
|
+
conditional_branch_mnemonics = {
|
20
|
+
# All 57 varieties of Jcc opcode
|
21
|
+
"jo",
|
22
|
+
"jno",
|
23
|
+
"jb",
|
24
|
+
"jnae",
|
25
|
+
"jc",
|
26
|
+
"jnb",
|
27
|
+
"jae",
|
28
|
+
"jnc",
|
29
|
+
"jz",
|
30
|
+
"je",
|
31
|
+
"jnz",
|
32
|
+
"jne",
|
33
|
+
"jbe",
|
34
|
+
"jna",
|
35
|
+
"jnbe",
|
36
|
+
"ja",
|
37
|
+
"js",
|
38
|
+
"jns",
|
39
|
+
"jp",
|
40
|
+
"jpe",
|
41
|
+
"jnp",
|
42
|
+
"jpo",
|
43
|
+
"jl",
|
44
|
+
"jnge",
|
45
|
+
"jnl",
|
46
|
+
"jge",
|
47
|
+
"jle",
|
48
|
+
"jng",
|
49
|
+
"jnle",
|
50
|
+
"jg",
|
51
|
+
# Jump if (re)?cx is zero
|
52
|
+
# Oddly I can't find this in the opcode tables;
|
53
|
+
# it's mentioned tangentially in the docs for Jcc
|
54
|
+
# (and it's accepted by the assembler.)
|
55
|
+
"jrcxz",
|
56
|
+
"jecxz",
|
57
|
+
"jcxz",
|
58
|
+
}
|
59
|
+
# TODO: Should arithmetic operations that impact flags be compares?
|
60
|
+
compare_mnemonics = {
|
61
|
+
# Basic integer comparisons.
|
62
|
+
"cmp",
|
63
|
+
"test",
|
64
|
+
# SIMD float comparisons
|
65
|
+
# 'pd' and 'ps' variants work on packed double and packed single floats.
|
66
|
+
# TODO I'm not sure how this extends for AVX2 registers
|
67
|
+
# NOTE: There's another, less-descriptive way to decode these
|
68
|
+
# what does capstone use?
|
69
|
+
"cmpeqpd",
|
70
|
+
"cmpeqps",
|
71
|
+
"cmpltpd",
|
72
|
+
"cmpltps",
|
73
|
+
"cmplepd",
|
74
|
+
"cmpleps",
|
75
|
+
"cmpunordpd",
|
76
|
+
"cmpunordps",
|
77
|
+
"cmpneqpd",
|
78
|
+
"cmpneqps",
|
79
|
+
"cmpnltpd",
|
80
|
+
"cmpnltps",
|
81
|
+
"cmpnlepd",
|
82
|
+
"cmpnleps",
|
83
|
+
"cmpordpd",
|
84
|
+
"cmpordps",
|
85
|
+
# Compare string operands
|
86
|
+
"cmps",
|
87
|
+
"cmpsw",
|
88
|
+
"cmpsd",
|
89
|
+
"cmpsq",
|
90
|
+
# Single float comparisons
|
91
|
+
# 'sd' and 'ss' variants work on double and single-precision floats.
|
92
|
+
# TODO: I'm not sure how this extends for AVX2 registers
|
93
|
+
"cmpeqsd",
|
94
|
+
"cmpeqss",
|
95
|
+
"cmpltsd",
|
96
|
+
"cmpltss",
|
97
|
+
"cmplesd",
|
98
|
+
"cmpless",
|
99
|
+
"cmpunordsd",
|
100
|
+
"cmpunordss",
|
101
|
+
"cmpneqsd",
|
102
|
+
"cmpneqss",
|
103
|
+
"cmpnltsd",
|
104
|
+
"cmpnltss",
|
105
|
+
"cmpnlesd",
|
106
|
+
"cmpnless",
|
107
|
+
"cmpordsd",
|
108
|
+
"cmpordss",
|
109
|
+
# TODO: Do cmpxchg, cmpxchg8b, cmpxchg16b count?
|
110
|
+
# Generic float comparison
|
111
|
+
# Unlike previous lists, sets multiple flags depending.
|
112
|
+
"comisd",
|
113
|
+
"comiss",
|
114
|
+
# x87 float comparison
|
115
|
+
# Sets FPU condition flags
|
116
|
+
"fcom",
|
117
|
+
"fcomp",
|
118
|
+
"fcompp",
|
119
|
+
# x87 float comparison
|
120
|
+
# Sets eflags
|
121
|
+
"fcomi",
|
122
|
+
"fcomip",
|
123
|
+
"fcomipp",
|
124
|
+
# x87 integer comparison
|
125
|
+
"ficom",
|
126
|
+
"ficomp",
|
127
|
+
# x87 test (comparison against zero)
|
128
|
+
# Sets FPU condition flags
|
129
|
+
"ftst",
|
130
|
+
# x87 float comparison
|
131
|
+
# Sets FPU condition flags
|
132
|
+
# Behaves differently with NaNs
|
133
|
+
"fucom",
|
134
|
+
"fucomp",
|
135
|
+
"fucompp",
|
136
|
+
# x87 examine float
|
137
|
+
# Sets FPU flags according to which type of float this is (normal, zero, NaN, infty...)
|
138
|
+
"fxam",
|
139
|
+
# TODO: There may be more of these... waiting...
|
140
|
+
}
|
141
|
+
|
142
|
+
pc_register = "rip"
|
143
|
+
sp_register = "rsp"
|
144
|
+
|
145
|
+
# NOTE: rbp and rsp are not considered general.
|
146
|
+
# You _can_ use them as GPRs; it's very rarely a good idea.
|
147
|
+
general_purpose_registers = [
|
148
|
+
"rax",
|
149
|
+
"rbx",
|
150
|
+
"rcx",
|
151
|
+
"rdx",
|
152
|
+
"rdi",
|
153
|
+
"rsi",
|
154
|
+
"r8",
|
155
|
+
"r9",
|
156
|
+
"r10",
|
157
|
+
"r11",
|
158
|
+
"r12",
|
159
|
+
"r13",
|
160
|
+
"r14",
|
161
|
+
"r15",
|
162
|
+
]
|
163
|
+
registers = {
|
164
|
+
# *** General Purpose Registers ***
|
165
|
+
"rax": RegisterDef(name="rax", size=8),
|
166
|
+
"eax": RegisterAliasDef(name="eax", parent="rax", size=4, offset=0),
|
167
|
+
"ax": RegisterAliasDef(name="ax", parent="rax", size=2, offset=0),
|
168
|
+
"al": RegisterAliasDef(name="al", parent="rax", size=1, offset=0),
|
169
|
+
"ah": RegisterAliasDef(name="ah", parent="rax", size=1, offset=1),
|
170
|
+
"rbx": RegisterDef(name="rbx", size=8),
|
171
|
+
"ebx": RegisterAliasDef(name="ebx", parent="rbx", size=4, offset=0),
|
172
|
+
"bx": RegisterAliasDef(name="bx", parent="rbx", size=2, offset=0),
|
173
|
+
"bl": RegisterAliasDef(name="bl", parent="rbx", size=1, offset=0),
|
174
|
+
"bh": RegisterAliasDef(name="bh", parent="rbx", size=1, offset=1),
|
175
|
+
"rcx": RegisterDef(name="rcx", size=8),
|
176
|
+
"ecx": RegisterAliasDef(name="ecx", parent="rcx", size=4, offset=0),
|
177
|
+
"cx": RegisterAliasDef(name="cx", parent="rcx", size=2, offset=0),
|
178
|
+
"cl": RegisterAliasDef(name="cl", parent="rcx", size=1, offset=0),
|
179
|
+
"ch": RegisterAliasDef(name="ch", parent="rcx", size=1, offset=1),
|
180
|
+
"rdx": RegisterDef(name="rdx", size=8),
|
181
|
+
"edx": RegisterAliasDef(name="edx", parent="rdx", size=4, offset=0),
|
182
|
+
"dx": RegisterAliasDef(name="dx", parent="rdx", size=2, offset=0),
|
183
|
+
"dl": RegisterAliasDef(name="dl", parent="rdx", size=1, offset=0),
|
184
|
+
"dh": RegisterAliasDef(name="dh", parent="rdx", size=1, offset=1),
|
185
|
+
"r8": RegisterDef(name="r8", size=8),
|
186
|
+
"r8d": RegisterAliasDef(name="r8d", parent="r8", size=4, offset=0),
|
187
|
+
"r8w": RegisterAliasDef(name="r8w", parent="r8", size=2, offset=0),
|
188
|
+
"r8b": RegisterAliasDef(name="r8b", parent="r8", size=1, offset=0),
|
189
|
+
"r9": RegisterDef(name="r9", size=8),
|
190
|
+
"r9d": RegisterAliasDef(name="r9d", parent="r9", size=4, offset=0),
|
191
|
+
"r9w": RegisterAliasDef(name="r9w", parent="r9", size=2, offset=0),
|
192
|
+
"r9b": RegisterAliasDef(name="r9b", parent="r9", size=1, offset=0),
|
193
|
+
"r10": RegisterDef(name="r10", size=8),
|
194
|
+
"r10d": RegisterAliasDef(name="r10d", parent="r10", size=4, offset=0),
|
195
|
+
"r10w": RegisterAliasDef(name="r10w", parent="r10", size=2, offset=0),
|
196
|
+
"r10b": RegisterAliasDef(name="r10b", parent="r10", size=1, offset=0),
|
197
|
+
"r11": RegisterDef(name="r11", size=8),
|
198
|
+
"r11d": RegisterAliasDef(name="r11d", parent="r11", size=4, offset=0),
|
199
|
+
"r11w": RegisterAliasDef(name="r11w", parent="r11", size=2, offset=0),
|
200
|
+
"r11b": RegisterAliasDef(name="r11b", parent="r11", size=1, offset=0),
|
201
|
+
"r12": RegisterDef(name="r12", size=8),
|
202
|
+
"r12d": RegisterAliasDef(name="r12d", parent="r12", size=4, offset=0),
|
203
|
+
"r12w": RegisterAliasDef(name="r12w", parent="r12", size=2, offset=0),
|
204
|
+
"r12b": RegisterAliasDef(name="r12b", parent="r12", size=1, offset=0),
|
205
|
+
"r13": RegisterDef(name="r13", size=8),
|
206
|
+
"r13d": RegisterAliasDef(name="r13d", parent="r13", size=4, offset=0),
|
207
|
+
"r13w": RegisterAliasDef(name="r13w", parent="r13", size=2, offset=0),
|
208
|
+
"r13b": RegisterAliasDef(name="r13b", parent="r13", size=1, offset=0),
|
209
|
+
"r14": RegisterDef(name="r14", size=8),
|
210
|
+
"r14d": RegisterAliasDef(name="r14d", parent="r14", size=4, offset=0),
|
211
|
+
"r14w": RegisterAliasDef(name="r14w", parent="r14", size=2, offset=0),
|
212
|
+
"r14b": RegisterAliasDef(name="r14b", parent="r14", size=1, offset=0),
|
213
|
+
"r15": RegisterDef(name="r15", size=8),
|
214
|
+
"r15d": RegisterAliasDef(name="r15d", parent="r15", size=4, offset=0),
|
215
|
+
"r15w": RegisterAliasDef(name="r15w", parent="r15", size=2, offset=0),
|
216
|
+
"r15b": RegisterAliasDef(name="r15b", parent="r15", size=1, offset=0),
|
217
|
+
"rdi": RegisterDef(name="rdi", size=8),
|
218
|
+
"edi": RegisterAliasDef(name="edi", parent="rdi", size=4, offset=0),
|
219
|
+
"di": RegisterAliasDef(name="di", parent="rdi", size=2, offset=0),
|
220
|
+
"dil": RegisterAliasDef(name="dil", parent="rdi", size=1, offset=0),
|
221
|
+
"rsi": RegisterDef(name="rsi", size=8),
|
222
|
+
"esi": RegisterAliasDef(name="esi", parent="rsi", size=4, offset=0),
|
223
|
+
"si": RegisterAliasDef(name="si", parent="rsi", size=2, offset=0),
|
224
|
+
"sil": RegisterAliasDef(name="sil", parent="rsi", size=1, offset=0),
|
225
|
+
"rsp": RegisterDef(name="rsp", size=8),
|
226
|
+
"esp": RegisterAliasDef(name="esp", parent="rsp", size=4, offset=0),
|
227
|
+
"sp": RegisterAliasDef(name="sp", parent="rsp", size=2, offset=0),
|
228
|
+
"spl": RegisterAliasDef(name="spl", parent="rsp", size=1, offset=0),
|
229
|
+
"rbp": RegisterDef(name="rbp", size=8),
|
230
|
+
"ebp": RegisterAliasDef(name="ebp", parent="rbp", size=4, offset=0),
|
231
|
+
"bp": RegisterAliasDef(name="bp", parent="rbp", size=2, offset=0),
|
232
|
+
"bpl": RegisterAliasDef(name="bpl", parent="rbp", size=1, offset=0),
|
233
|
+
# *** Instruction Pointer ***
|
234
|
+
"rip": RegisterDef(name="rip", size=8),
|
235
|
+
"eip": RegisterAliasDef(name="eip", parent="rip", size=4, offset=0),
|
236
|
+
"ip": RegisterAliasDef(name="ip", parent="rip", size=2, offset=0),
|
237
|
+
"pc": RegisterAliasDef(name="pc", parent="rip", size=8, offset=0),
|
238
|
+
# *** Flags register ***
|
239
|
+
"rflags": RegisterDef(name="rflags", size=8),
|
240
|
+
"eflags": RegisterAliasDef(name="eflags", parent="rflags", size=4, offset=0),
|
241
|
+
"flags": RegisterAliasDef(name="flags", parent="rflags", size=2, offset=0),
|
242
|
+
# *** Segment Registers ***
|
243
|
+
# NOTE: These are actually 16 bits
|
244
|
+
# However, their representation in different emulators gets weird.
|
245
|
+
"cs": RegisterDef(name="cs", size=8),
|
246
|
+
"ds": RegisterDef(name="ds", size=8),
|
247
|
+
"es": RegisterDef(name="es", size=8),
|
248
|
+
"fs": RegisterDef(name="fs", size=8),
|
249
|
+
"gs": RegisterDef(name="gs", size=8),
|
250
|
+
"ss": RegisterDef(name="ss", size=8),
|
251
|
+
# *** Control Registers ***
|
252
|
+
"cr0": RegisterDef(name="cr0", size=8),
|
253
|
+
"cr1": RegisterDef(name="cr1", size=8),
|
254
|
+
"cr2": RegisterDef(name="cr2", size=8),
|
255
|
+
"cr3": RegisterDef(name="cr3", size=8),
|
256
|
+
"cr4": RegisterDef(name="cr4", size=8),
|
257
|
+
"cr8": RegisterDef(name="cr8", size=8),
|
258
|
+
# *** Debug Registers ***
|
259
|
+
"dr0": RegisterDef(name="dr0", size=8),
|
260
|
+
"dr1": RegisterDef(name="dr1", size=8),
|
261
|
+
"dr2": RegisterDef(name="dr2", size=8),
|
262
|
+
"dr3": RegisterDef(name="dr3", size=8),
|
263
|
+
"dr6": RegisterDef(name="dr6", size=8),
|
264
|
+
"dr7": RegisterDef(name="dr7", size=8),
|
265
|
+
"dr8": RegisterDef(name="dr8", size=8),
|
266
|
+
"dr9": RegisterDef(name="dr9", size=8),
|
267
|
+
"dr10": RegisterDef(name="dr10", size=8),
|
268
|
+
"dr11": RegisterDef(name="dr11", size=8),
|
269
|
+
"dr12": RegisterDef(name="dr12", size=8),
|
270
|
+
"dr13": RegisterDef(name="dr13", size=8),
|
271
|
+
"dr14": RegisterDef(name="dr14", size=8),
|
272
|
+
"dr15": RegisterDef(name="dr15", size=8),
|
273
|
+
# *** Descriptor Table Registers ***
|
274
|
+
"gdtr": RegisterDef(name="gdtr", size=10),
|
275
|
+
"idtr": RegisterDef(name="idtr", size=10),
|
276
|
+
"ldtr": RegisterDef(name="ldtr", size=10),
|
277
|
+
# *** Task Register ***
|
278
|
+
"tr": RegisterDef(name="tr", size=2),
|
279
|
+
# *** x87 registers ***
|
280
|
+
# NOTE: These represent the physical registers.
|
281
|
+
# x87 references registers as a stack,
|
282
|
+
# which isn't possible to represent statically.
|
283
|
+
"fpr0": RegisterDef(name="fpr0", size=10),
|
284
|
+
"fpr1": RegisterDef(name="fpr1", size=10),
|
285
|
+
"fpr2": RegisterDef(name="fpr2", size=10),
|
286
|
+
"fpr3": RegisterDef(name="fpr3", size=10),
|
287
|
+
"fpr4": RegisterDef(name="fpr4", size=10),
|
288
|
+
"fpr5": RegisterDef(name="fpr5", size=10),
|
289
|
+
"fpr6": RegisterDef(name="fpr6", size=10),
|
290
|
+
"fpr7": RegisterDef(name="fpr7", size=10),
|
291
|
+
# x87 Control Register
|
292
|
+
"fctrl": RegisterDef(name="fctrl", size=2),
|
293
|
+
# x87 Status Register
|
294
|
+
"fstat": RegisterDef(name="fstat", size=2),
|
295
|
+
# x87 Tag Register
|
296
|
+
"ftag": RegisterDef(name="ftag", size=2),
|
297
|
+
# x87 Last Instruction Register
|
298
|
+
"fip": RegisterDef(name="fip", size=8),
|
299
|
+
# x87 Last Operand Pointer
|
300
|
+
"fdp": RegisterDef(name="fdp", size=8),
|
301
|
+
# x87 Last Opcode
|
302
|
+
"fop": RegisterDef(name="fop", size=2),
|
303
|
+
# NOTE: Docs disagree on the format of fip and fdp.
|
304
|
+
# One source describes them as 48-bit offset-plus-segment,
|
305
|
+
# the other describes them as 64-bit.
|
306
|
+
# There may also be separate segment registers.
|
307
|
+
# If you care about the x87 debug info, please feel free to update.
|
308
|
+
# *** MMX Registers ***
|
309
|
+
# NOTE: The MMX registers are aliases for the low 8 bytes of the x87 registers.
|
310
|
+
# The two subsystems cannot be used simultaneously.
|
311
|
+
"mm0": RegisterAliasDef(name="mm0", parent="fpr0", size=8, offset=0),
|
312
|
+
"mm1": RegisterAliasDef(name="mm1", parent="fpr1", size=8, offset=0),
|
313
|
+
"mm2": RegisterAliasDef(name="mm2", parent="fpr2", size=8, offset=0),
|
314
|
+
"mm3": RegisterAliasDef(name="mm3", parent="fpr3", size=8, offset=0),
|
315
|
+
"mm4": RegisterAliasDef(name="mm4", parent="fpr4", size=8, offset=0),
|
316
|
+
"mm5": RegisterAliasDef(name="mm5", parent="fpr5", size=8, offset=0),
|
317
|
+
"mm6": RegisterAliasDef(name="mm6", parent="fpr6", size=8, offset=0),
|
318
|
+
"mm7": RegisterAliasDef(name="mm7", parent="fpr7", size=8, offset=0),
|
319
|
+
}
|
320
|
+
|
321
|
+
|
322
|
+
class AMD64(AMD64BasePlatformDef):
|
323
|
+
architecture = Architecture.X86_64
|
324
|
+
|
325
|
+
registers = AMD64BasePlatformDef.registers | {
|
326
|
+
# *** SSE/AVX/AVX2 registers ***
|
327
|
+
"ymm0": RegisterDef(name="ymm0", size=32),
|
328
|
+
"xmm0": RegisterAliasDef(name="xmm0", parent="ymm0", size=16, offset=0),
|
329
|
+
"ymm1": RegisterDef(name="ymm1", size=32),
|
330
|
+
"xmm1": RegisterAliasDef(name="xmm1", parent="ymm1", size=16, offset=0),
|
331
|
+
"ymm2": RegisterDef(name="ymm2", size=32),
|
332
|
+
"xmm2": RegisterAliasDef(name="xmm2", parent="ymm2", size=16, offset=0),
|
333
|
+
"ymm3": RegisterDef(name="ymm3", size=32),
|
334
|
+
"xmm3": RegisterAliasDef(name="xmm3", parent="ymm3", size=16, offset=0),
|
335
|
+
"ymm4": RegisterDef(name="ymm4", size=32),
|
336
|
+
"xmm4": RegisterAliasDef(name="xmm4", parent="ymm4", size=16, offset=0),
|
337
|
+
"ymm5": RegisterDef(name="ymm5", size=32),
|
338
|
+
"xmm5": RegisterAliasDef(name="xmm5", parent="ymm5", size=16, offset=0),
|
339
|
+
"ymm6": RegisterDef(name="ymm6", size=32),
|
340
|
+
"xmm6": RegisterAliasDef(name="xmm6", parent="ymm6", size=16, offset=0),
|
341
|
+
"ymm7": RegisterDef(name="ymm7", size=32),
|
342
|
+
"xmm7": RegisterAliasDef(name="xmm7", parent="ymm7", size=16, offset=0),
|
343
|
+
"ymm8": RegisterDef(name="ymm8", size=32),
|
344
|
+
"xmm8": RegisterAliasDef(name="xmm8", parent="ymm8", size=16, offset=0),
|
345
|
+
"ymm9": RegisterDef(name="ymm9", size=32),
|
346
|
+
"xmm9": RegisterAliasDef(name="xmm9", parent="ymm9", size=16, offset=0),
|
347
|
+
"ymm10": RegisterDef(name="ymm10", size=32),
|
348
|
+
"xmm10": RegisterAliasDef(name="xmm10", parent="ymm10", size=16, offset=0),
|
349
|
+
"ymm11": RegisterDef(name="ymm11", size=32),
|
350
|
+
"xmm11": RegisterAliasDef(name="xmm11", parent="ymm11", size=16, offset=0),
|
351
|
+
"ymm12": RegisterDef(name="ymm12", size=32),
|
352
|
+
"xmm12": RegisterAliasDef(name="xmm12", parent="ymm12", size=16, offset=0),
|
353
|
+
"ymm13": RegisterDef(name="ymm13", size=32),
|
354
|
+
"xmm13": RegisterAliasDef(name="xmm13", parent="ymm13", size=16, offset=0),
|
355
|
+
"ymm14": RegisterDef(name="ymm14", size=32),
|
356
|
+
"xmm14": RegisterAliasDef(name="xmm14", parent="ymm14", size=16, offset=0),
|
357
|
+
"ymm15": RegisterDef(name="ymm15", size=32),
|
358
|
+
"xmm15": RegisterAliasDef(name="xmm15", parent="ymm15", size=16, offset=0),
|
359
|
+
}
|
360
|
+
|
361
|
+
|
362
|
+
class AMD64AVX512(AMD64BasePlatformDef):
|
363
|
+
architecture = Architecture.X86_64_AVX512
|
364
|
+
|
365
|
+
registers = AMD64BasePlatformDef.registers | {
|
366
|
+
# *** SSE/AVX/AVX2/AVX512 registers ***
|
367
|
+
"zmm0": RegisterDef(name="zmm0", size=64),
|
368
|
+
"ymm0": RegisterAliasDef(name="ymm0", parent="zmm0", size=32, offset=0),
|
369
|
+
"xmm0": RegisterAliasDef(name="xmm0", parent="zmm0", size=16, offset=0),
|
370
|
+
"zmm1": RegisterDef(name="zmm1", size=64),
|
371
|
+
"ymm1": RegisterAliasDef(name="ymm1", parent="zmm1", size=32, offset=0),
|
372
|
+
"xmm1": RegisterAliasDef(name="xmm1", parent="zmm1", size=16, offset=0),
|
373
|
+
"zmm2": RegisterDef(name="zmm2", size=64),
|
374
|
+
"ymm2": RegisterAliasDef(name="ymm2", parent="zmm2", size=32, offset=0),
|
375
|
+
"xmm2": RegisterAliasDef(name="xmm2", parent="zmm2", size=16, offset=0),
|
376
|
+
"zmm3": RegisterDef(name="zmm3", size=64),
|
377
|
+
"ymm3": RegisterAliasDef(name="ymm3", parent="zmm3", size=32, offset=0),
|
378
|
+
"xmm3": RegisterAliasDef(name="xmm3", parent="zmm3", size=16, offset=0),
|
379
|
+
"zmm4": RegisterDef(name="zmm4", size=64),
|
380
|
+
"ymm4": RegisterAliasDef(name="ymm4", parent="zmm4", size=32, offset=0),
|
381
|
+
"xmm4": RegisterAliasDef(name="xmm4", parent="zmm4", size=16, offset=0),
|
382
|
+
"zmm5": RegisterDef(name="zmm5", size=64),
|
383
|
+
"ymm5": RegisterAliasDef(name="ymm5", parent="zmm5", size=32, offset=0),
|
384
|
+
"xmm5": RegisterAliasDef(name="xmm5", parent="zmm5", size=16, offset=0),
|
385
|
+
"zmm6": RegisterDef(name="zmm6", size=64),
|
386
|
+
"ymm6": RegisterAliasDef(name="ymm6", parent="zmm6", size=32, offset=0),
|
387
|
+
"xmm6": RegisterAliasDef(name="xmm6", parent="zmm6", size=16, offset=0),
|
388
|
+
"zmm7": RegisterDef(name="zmm7", size=64),
|
389
|
+
"ymm7": RegisterAliasDef(name="ymm7", parent="zmm7", size=32, offset=0),
|
390
|
+
"xmm7": RegisterAliasDef(name="xmm7", parent="zmm7", size=16, offset=0),
|
391
|
+
"zmm8": RegisterDef(name="zmm8", size=64),
|
392
|
+
"ymm8": RegisterAliasDef(name="ymm8", parent="zmm8", size=32, offset=0),
|
393
|
+
"xmm8": RegisterAliasDef(name="xmm8", parent="zmm8", size=16, offset=0),
|
394
|
+
"zmm9": RegisterDef(name="zmm9", size=64),
|
395
|
+
"ymm9": RegisterAliasDef(name="ymm9", parent="zmm9", size=32, offset=0),
|
396
|
+
"xmm9": RegisterAliasDef(name="xmm9", parent="zmm9", size=16, offset=0),
|
397
|
+
"zmm10": RegisterDef(name="zmm10", size=64),
|
398
|
+
"ymm10": RegisterAliasDef(name="ymm10", parent="zmm10", size=32, offset=0),
|
399
|
+
"xmm10": RegisterAliasDef(name="xmm10", parent="zmm10", size=16, offset=0),
|
400
|
+
"zmm11": RegisterDef(name="zmm11", size=64),
|
401
|
+
"ymm11": RegisterAliasDef(name="ymm11", parent="zmm11", size=32, offset=0),
|
402
|
+
"xmm11": RegisterAliasDef(name="xmm11", parent="zmm11", size=16, offset=0),
|
403
|
+
"zmm12": RegisterDef(name="zmm12", size=64),
|
404
|
+
"ymm12": RegisterAliasDef(name="ymm12", parent="zmm12", size=32, offset=0),
|
405
|
+
"xmm12": RegisterAliasDef(name="xmm12", parent="zmm12", size=16, offset=0),
|
406
|
+
"zmm13": RegisterDef(name="zmm13", size=64),
|
407
|
+
"ymm13": RegisterAliasDef(name="ymm13", parent="zmm13", size=32, offset=0),
|
408
|
+
"xmm13": RegisterAliasDef(name="xmm13", parent="zmm13", size=16, offset=0),
|
409
|
+
"zmm14": RegisterDef(name="zmm14", size=64),
|
410
|
+
"ymm14": RegisterAliasDef(name="ymm14", parent="zmm14", size=32, offset=0),
|
411
|
+
"xmm14": RegisterAliasDef(name="xmm14", parent="zmm14", size=16, offset=0),
|
412
|
+
"zmm15": RegisterDef(name="zmm15", size=64),
|
413
|
+
"ymm15": RegisterAliasDef(name="ymm15", parent="zmm15", size=32, offset=0),
|
414
|
+
"xmm15": RegisterAliasDef(name="xmm15", parent="zmm15", size=16, offset=0),
|
415
|
+
"zmm16": RegisterDef(name="zmm16", size=64),
|
416
|
+
"ymm16": RegisterAliasDef(name="ymm16", parent="zmm16", size=32, offset=0),
|
417
|
+
"xmm16": RegisterAliasDef(name="xmm16", parent="zmm16", size=16, offset=0),
|
418
|
+
"zmm17": RegisterDef(name="zmm17", size=64),
|
419
|
+
"ymm17": RegisterAliasDef(name="ymm17", parent="zmm17", size=32, offset=0),
|
420
|
+
"xmm17": RegisterAliasDef(name="xmm17", parent="zmm17", size=16, offset=0),
|
421
|
+
"zmm18": RegisterDef(name="zmm18", size=64),
|
422
|
+
"ymm18": RegisterAliasDef(name="ymm18", parent="zmm18", size=32, offset=0),
|
423
|
+
"xmm18": RegisterAliasDef(name="xmm18", parent="zmm18", size=16, offset=0),
|
424
|
+
"zmm19": RegisterDef(name="zmm19", size=64),
|
425
|
+
"ymm19": RegisterAliasDef(name="ymm19", parent="zmm19", size=32, offset=0),
|
426
|
+
"xmm19": RegisterAliasDef(name="xmm19", parent="zmm19", size=16, offset=0),
|
427
|
+
"zmm20": RegisterDef(name="zmm20", size=64),
|
428
|
+
"ymm20": RegisterAliasDef(name="ymm20", parent="zmm20", size=32, offset=0),
|
429
|
+
"xmm20": RegisterAliasDef(name="xmm20", parent="zmm20", size=16, offset=0),
|
430
|
+
"zmm21": RegisterDef(name="zmm21", size=64),
|
431
|
+
"ymm21": RegisterAliasDef(name="ymm21", parent="zmm21", size=32, offset=0),
|
432
|
+
"xmm21": RegisterAliasDef(name="xmm21", parent="zmm21", size=16, offset=0),
|
433
|
+
"zmm22": RegisterDef(name="zmm22", size=64),
|
434
|
+
"ymm22": RegisterAliasDef(name="ymm22", parent="zmm22", size=32, offset=0),
|
435
|
+
"xmm22": RegisterAliasDef(name="xmm22", parent="zmm22", size=16, offset=0),
|
436
|
+
"zmm23": RegisterDef(name="zmm23", size=64),
|
437
|
+
"ymm23": RegisterAliasDef(name="ymm23", parent="zmm23", size=32, offset=0),
|
438
|
+
"xmm23": RegisterAliasDef(name="xmm23", parent="zmm23", size=16, offset=0),
|
439
|
+
"zmm24": RegisterDef(name="zmm24", size=64),
|
440
|
+
"ymm24": RegisterAliasDef(name="ymm24", parent="zmm24", size=32, offset=0),
|
441
|
+
"xmm24": RegisterAliasDef(name="xmm24", parent="zmm24", size=16, offset=0),
|
442
|
+
"zmm25": RegisterDef(name="zmm25", size=64),
|
443
|
+
"ymm25": RegisterAliasDef(name="ymm25", parent="zmm25", size=32, offset=0),
|
444
|
+
"xmm25": RegisterAliasDef(name="xmm25", parent="zmm25", size=16, offset=0),
|
445
|
+
"zmm26": RegisterDef(name="zmm26", size=64),
|
446
|
+
"ymm26": RegisterAliasDef(name="ymm26", parent="zmm26", size=32, offset=0),
|
447
|
+
"xmm26": RegisterAliasDef(name="xmm26", parent="zmm26", size=16, offset=0),
|
448
|
+
"zmm27": RegisterDef(name="zmm27", size=64),
|
449
|
+
"ymm27": RegisterAliasDef(name="ymm27", parent="zmm27", size=32, offset=0),
|
450
|
+
"xmm27": RegisterAliasDef(name="xmm27", parent="zmm27", size=16, offset=0),
|
451
|
+
"zmm28": RegisterDef(name="zmm28", size=64),
|
452
|
+
"ymm28": RegisterAliasDef(name="ymm28", parent="zmm28", size=32, offset=0),
|
453
|
+
"xmm28": RegisterAliasDef(name="xmm28", parent="zmm28", size=16, offset=0),
|
454
|
+
"zmm29": RegisterDef(name="zmm29", size=64),
|
455
|
+
"ymm29": RegisterAliasDef(name="ymm29", parent="zmm29", size=32, offset=0),
|
456
|
+
"xmm29": RegisterAliasDef(name="xmm29", parent="zmm29", size=16, offset=0),
|
457
|
+
"zmm30": RegisterDef(name="zmm30", size=64),
|
458
|
+
"ymm30": RegisterAliasDef(name="ymm30", parent="zmm30", size=32, offset=0),
|
459
|
+
"xmm30": RegisterAliasDef(name="xmm30", parent="zmm30", size=16, offset=0),
|
460
|
+
"zmm31": RegisterDef(name="zmm31", size=64),
|
461
|
+
"ymm31": RegisterAliasDef(name="ymm31", parent="zmm31", size=32, offset=0),
|
462
|
+
"xmm31": RegisterAliasDef(name="xmm31", parent="zmm31", size=16, offset=0),
|
463
|
+
}
|