Skip to content

Commit 87221fa

Browse files
committed
Add support for the MOS65XX family such as the MOS 6502.
Signed-off-by: Sebastian Macke <[email protected]>
1 parent a69f788 commit 87221fa

16 files changed

+1163
-6
lines changed

CMakeLists.txt

+18-2
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ option(CAPSTONE_BUILD_TESTS "Build tests" ON)
2828
option(CAPSTONE_BUILD_CSTOOL "Build cstool" ON)
2929
option(CAPSTONE_USE_DEFAULT_ALLOC "Use default memory allocation functions" ON)
3030

31-
set(SUPPORTED_ARCHITECTURES ARM ARM64 M68K MIPS PPC SPARC SYSZ XCORE X86 TMS320C64X M680X EVM)
32-
set(SUPPORTED_ARCHITECTURE_LABELS ARM ARM64 M68K MIPS PowerPC Sparc SystemZ XCore x86 TMS320C64x M680x EVM)
31+
set(SUPPORTED_ARCHITECTURES ARM ARM64 M68K MIPS PPC SPARC SYSZ XCORE X86 TMS320C64X M680X EVM MOS65XX)
32+
set(SUPPORTED_ARCHITECTURE_LABELS ARM ARM64 M68K MIPS PowerPC Sparc SystemZ XCore x86 TMS320C64x M680x EVM MOS65XX)
3333

3434
list(LENGTH SUPPORTED_ARCHITECTURES count)
3535
math(EXPR count "${count}-1")
@@ -112,6 +112,7 @@ set(HEADERS_COMMON
112112
include/capstone/m68k.h
113113
include/capstone/tms320c64x.h
114114
include/capstone/m680x.h
115+
include/capstone/mos65xx.h
115116
include/capstone/platform.h
116117
)
117118

@@ -444,6 +445,17 @@ if (CAPSTONE_EVM_SUPPORT)
444445
set(TEST_SOURCES ${TEST_SOURCES} test_evm.c)
445446
endif ()
446447

448+
if (CAPSTONE_MOS65XX_SUPPORT)
449+
add_definitions(-DCAPSTONE_HAS_MOS65XX)
450+
set(SOURCES_MOS65XX
451+
arch/MOS65XX/MOS65XXModule.c
452+
arch/MOS65XX/MOS65XXDisassembler.c)
453+
set(HEADERS_SOURCES_MOS65XX
454+
arch/MOS65XX/MOS65XXDisassembler.h
455+
)
456+
set(TEST_SOURCES ${TEST_SOURCES} test_mos65xx.c)
457+
endif ()
458+
447459
if (CAPSTONE_OSXKERNEL_SUPPORT)
448460
add_definitions(-DCAPSTONE_HAS_OSXKERNEL)
449461
endif ()
@@ -462,6 +474,7 @@ set(ALL_SOURCES
462474
${SOURCES_TMS320C64X}
463475
${SOURCES_M680X}
464476
${SOURCES_EVM}
477+
${SOURCES_MOS65XX}
465478
)
466479

467480
set(ALL_HEADERS
@@ -479,6 +492,7 @@ set(ALL_HEADERS
479492
${HEADERS_TMS320C64X}
480493
${HEADERS_M680X}
481494
${HEADERS_EVM}
495+
${HEADERS_MOS65XX}
482496
)
483497

484498
include_directories("${PROJECT_SOURCE_DIR}/include")
@@ -559,6 +573,7 @@ source_group("Source\\M68K" FILES ${SOURCES_M68K})
559573
source_group("Source\\TMS320C64x" FILES ${SOURCES_TMS320C64X})
560574
source_group("Source\\M680X" FILES ${SOURCES_M680X})
561575
source_group("Source\\EVM" FILES ${SOURCES_EVM})
576+
source_group("Source\\MOS65XX" FILES ${SOURCES_MOS65XX})
562577

563578
source_group("Include\\Common" FILES ${HEADERS_COMMON})
564579
source_group("Include\\Engine" FILES ${HEADERS_ENGINE})
@@ -574,6 +589,7 @@ source_group("Include\\M68K" FILES ${HEADERS_M68K})
574589
source_group("Include\\TMS320C64x" FILES ${HEADERS_TMS320C64X})
575590
source_group("Include\\M680X" FILES ${HEADERS_MC680X})
576591
source_group("Include\\EVM" FILES ${HEADERS_EVM})
592+
source_group("Include\\MOS65XX" FILES ${HEADERS_MOS65XX})
577593

578594
### test library 64bit routine:
579595
get_property(LIB64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS)

Makefile

+16-2
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,21 @@ ifneq (,$(findstring evm,$(CAPSTONE_ARCHS)))
250250
endif
251251

252252

253+
DEP_MOS65XX =
254+
DEP_MOS65XX += $(wildcard arch/MOS65XX/MOS65XX*.inc)
255+
256+
LIBOBJ_MOS65XX =
257+
ifneq (,$(findstring mos65xx,$(CAPSTONE_ARCHS)))
258+
CFLAGS += -DCAPSTONE_HAS_MOS65XX
259+
LIBSRC_MOS65XX += $(wildcard arch/MOS65XX/MOS65XX*.c)
260+
LIBOBJ_MOS65XX += $(LIBSRC_MOS65XX:%.c=$(OBJDIR)/%.o)
261+
endif
262+
263+
253264
LIBOBJ =
254265
LIBOBJ += $(OBJDIR)/cs.o $(OBJDIR)/utils.o $(OBJDIR)/SStream.o $(OBJDIR)/MCInstrDesc.o $(OBJDIR)/MCRegisterInfo.o
255-
LIBOBJ += $(LIBOBJ_ARM) $(LIBOBJ_ARM64) $(LIBOBJ_M68K) $(LIBOBJ_MIPS) $(LIBOBJ_PPC) $(LIBOBJ_SPARC) $(LIBOBJ_SYSZ) $(LIBOBJ_X86) $(LIBOBJ_XCORE) $(LIBOBJ_TMS320C64X) $(LIBOBJ_M680X) $(LIBOBJ_EVM)
266+
LIBOBJ += $(LIBOBJ_ARM) $(LIBOBJ_ARM64) $(LIBOBJ_M68K) $(LIBOBJ_MIPS) $(LIBOBJ_PPC) $(LIBOBJ_SPARC) $(LIBOBJ_SYSZ)
267+
LIBOBJ += $(LIBOBJ_X86) $(LIBOBJ_XCORE) $(LIBOBJ_TMS320C64X) $(LIBOBJ_M680X) $(LIBOBJ_EVM) $(LIBOBJ_MOS65XX)
256268
LIBOBJ += $(OBJDIR)/MCInst.o
257269

258270

@@ -381,6 +393,7 @@ $(LIBOBJ_XCORE): $(DEP_XCORE)
381393
$(LIBOBJ_TMS320C64X): $(DEP_TMS320C64X)
382394
$(LIBOBJ_M680X): $(DEP_M680X)
383395
$(LIBOBJ_EVM): $(DEP_EVM)
396+
$(LIBOBJ_MOS65XX): $(DEP_MOS65XX)
384397

385398
ifeq ($(CAPSTONE_STATIC),yes)
386399
$(ARCHIVE): $(LIBOBJ)
@@ -456,11 +469,12 @@ dist:
456469

457470

458471
TESTS = test_basic test_detail test_arm test_arm64 test_m68k test_mips test_ppc test_sparc
459-
TESTS += test_systemz test_x86 test_xcore test_iter test_evm
472+
TESTS += test_systemz test_x86 test_xcore test_iter test_evm test_mos65xx
460473
TESTS += test_basic.static test_detail.static test_arm.static test_arm64.static
461474
TESTS += test_m68k.static test_mips.static test_ppc.static test_sparc.static
462475
TESTS += test_systemz.static test_x86.static test_xcore.static test_m680x.static
463476
TESTS += test_skipdata test_skipdata.static test_iter.static test_evm.static
477+
TESTS += test_mos65xx.static
464478
check: $(TESTS) fuzztest
465479
test_%:
466480
./tests/$@ > /dev/null && echo OK || echo FAILED

0 commit comments

Comments
 (0)