35
35
'CS_ARCH_TMS320C64X' ,
36
36
'CS_ARCH_M680X' ,
37
37
'CS_ARCH_EVM' ,
38
+ 'CS_ARCH_MOS65XX' ,
38
39
'CS_ARCH_BPF' ,
39
40
'CS_ARCH_RISCV' ,
40
- 'CS_ARCH_MOS65XX ' ,
41
+ 'CS_ARCH_SH ' ,
41
42
'CS_ARCH_TRICORE' ,
42
43
'CS_ARCH_ALL' ,
43
44
89
90
'CS_MODE_MOS65XX_65816_LONG_M' ,
90
91
'CS_MODE_MOS65XX_65816_LONG_X' ,
91
92
'CS_MODE_MOS65XX_65816_LONG_MX' ,
93
+ 'CS_MODE_SH2' ,
94
+ 'CS_MODE_SH2A' ,
95
+ 'CS_MODE_SH3' ,
96
+ 'CS_MODE_SH4' ,
97
+ 'CS_MODE_SH4A' ,
98
+ 'CS_MODE_SHFPU' ,
99
+ 'CS_MODE_SHDSP' ,
92
100
'CS_MODE_TRICORE_110' ,
93
101
'CS_MODE_TRICORE_120' ,
94
102
'CS_MODE_TRICORE_130' ,
185
193
CS_ARCH_WASM = 13
186
194
CS_ARCH_BPF = 14
187
195
CS_ARCH_RISCV = 15
188
- # CS_ARCH_SH = 16
196
+ CS_ARCH_SH = 16
189
197
CS_ARCH_TRICORE = 17
190
198
CS_ARCH_MAX = 18
191
199
CS_ARCH_ALL = 0xFFFF
239
247
CS_MODE_MOS65XX_65816_LONG_M = (1 << 5 ) # MOS65XXX WDC 65816, 16-bit m, 8-bit x
240
248
CS_MODE_MOS65XX_65816_LONG_X = (1 << 6 ) # MOS65XXX WDC 65816, 8-bit m, 16-bit x
241
249
CS_MODE_MOS65XX_65816_LONG_MX = CS_MODE_MOS65XX_65816_LONG_M | CS_MODE_MOS65XX_65816_LONG_X
250
+ CS_MODE_SH2 = 1 << 1 # SH2
251
+ CS_MODE_SH2A = 1 << 2 # SH2A
252
+ CS_MODE_SH3 = 1 << 3 # SH3
253
+ CS_MODE_SH4 = 1 << 4 # SH4
254
+ CS_MODE_SH4A = 1 << 5 # SH4A
255
+ CS_MODE_SHFPU = 1 << 6 # w/ FPU
256
+ CS_MODE_SHDSP = 1 << 7 # w/ DSP
242
257
CS_MODE_TRICORE_110 = 1 << 1 # Tricore 1.1
243
258
CS_MODE_TRICORE_120 = 1 << 2 # Tricore 1.2
244
259
CS_MODE_TRICORE_130 = 1 << 3 # Tricore 1.3
@@ -387,7 +402,7 @@ def copy_ctypes_list(src):
387
402
return [copy_ctypes (n ) for n in src ]
388
403
389
404
# Weird import placement because these modules are needed by the below code but need the above functions
390
- from . import arm , arm64 , m68k , mips , ppc , sparc , systemz , x86 , xcore , tms320c64x , m680x , evm , mos65xx , bpf , riscv , tricore
405
+ from . import arm , arm64 , m68k , mips , ppc , sparc , systemz , x86 , xcore , tms320c64x , m680x , evm , mos65xx , bpf , riscv , sh , tricore
391
406
392
407
class _cs_arch (ctypes .Union ):
393
408
_fields_ = (
@@ -406,6 +421,7 @@ class _cs_arch(ctypes.Union):
406
421
('mos65xx' , mos65xx .CsMOS65xx ),
407
422
('bpf' , bpf .CsBPF ),
408
423
('riscv' , riscv .CsRISCV ),
424
+ ('sh' , sh .CsSH ),
409
425
('tricore' , tricore .CsTriCore ),
410
426
)
411
427
@@ -731,6 +747,8 @@ def __gen_detail(self):
731
747
(self .operands ) = bpf .get_arch_info (self ._raw .detail .contents .arch .bpf )
732
748
elif arch == CS_ARCH_RISCV :
733
749
(self .need_effective_addr , self .operands ) = riscv .get_arch_info (self ._raw .detail .contents .arch .riscv )
750
+ elif arch == CS_ARCH_SH :
751
+ (self .sh_insn , self .sh_size , self .operands ) = sh .get_arch_info (self ._raw .detail .contents .arch .sh )
734
752
elif arch == CS_ARCH_TRICORE :
735
753
(self .update_flags , self .operands ) = tricore .get_arch_info (self ._raw .detail .contents .arch .tricore )
736
754
@@ -1199,6 +1217,7 @@ def debug():
1199
1217
"sysz" : CS_ARCH_SYSZ , 'xcore' : CS_ARCH_XCORE , "tms320c64x" : CS_ARCH_TMS320C64X ,
1200
1218
"m680x" : CS_ARCH_M680X , 'evm' : CS_ARCH_EVM , 'mos65xx' : CS_ARCH_MOS65XX ,
1201
1219
'bpf' : CS_ARCH_BPF , 'riscv' : CS_ARCH_RISCV , 'tricore' : CS_ARCH_TRICORE ,
1220
+ 'sh' : CS_ARCH_SH ,
1202
1221
}
1203
1222
1204
1223
all_archs = ""
0 commit comments