Wanming Chu

77 papers A* 1A 1B 3C 21Misc 4Journal 15Unranked 31
YearRankTypeTitle / Venue / Authors
2022 C conf
PDCAT
Yamin Li, Wanming Chu
2022 C conf
SoMeT
Wanming Chu, Shun Yanaka, Yuta Watanabe, Yoshino Tomoaki
2021 J jnl
Int. J. Comput. Sci. Eng.
Shashank Shrestha, Manoj Poudel, Rashmi P. Sarode, Wanming Chu, Subhash Bhalla
2021 C conf
HIS
Yamin Li, Wanming Chu
2020 J jnl
Int. J. Commun. Syst.
Yamin Li, Wanming Chu
2019 conf
Poly/DMAH@VLDB
Manoj Poudel, Rashmi P. Sarode, Shashank Shrestha, Wanming Chu, Subhash Bhalla
2019 conf
COMAD/CODS
Shelly Sachdeva, Wanming Chu, Subhash Bhalla
2019 conf
BDA
Rashmi P. Sarode, Shelly Sachdeva, Wanming Chu, Subhash Bhalla
2019 conf
CITS
Yamin Li, Wanming Chu
2018 conf
SmartWorld/SCALCOM/UIC/ATC/CBDCom/IOP/SCI
Yamin Li, Wanming Chu
2018 conf
Poly/DMAH@VLDB
Shashank Shrestha, Manoj Poudel, Yilang Wu, Wanming Chu, Subhash Bhalla, Thomas Kupfer, Shrinivas Kulkarni
2018 J jnl
Int. J. Comput. Sci. Eng.
Wanming Chu
2017 conf
CITS
Yamin Li, Wanming Chu
2017 C conf
SoMeT
Shashank Shrestha, Wanming Chu, Yilang Wu, Ruth Cortez, Alexander Vazhenin, Absalom Shu, Subhash Bhalla
2016 conf
Trustcom/BigDataSE/ISPA
Yamin Li, Wanming Chu
2016 conf
CITS
Yamin Li, Wanming Chu
2015 ed.
DNIS
Wanming Chu, Shinji Kikuchi, Subhash Bhalla
2015 J jnl
Int. J. Comput. Sci. Eng.
Aastha Madaan, Wanming Chu
2015 conf
DNIS
Yilang Wu, Wanming Chu
2014 conf
BDA
Hikaru Suzuki, Eri Suzuki, Wanming Chu, Junya Terazono, Subhash Bhalla
2014 conf
DNIS
Aastha Madaan, Wanming Chu
2014 conf
DNIS
Hiroki Nakamura, Subhash Bhalla, Junya Terazono, Wanming Chu
2014 conf
DNIS
Wanming Chu
2014 J jnl
Int. J. Big Data Intell.
Yamin Li, Wanming Chu
2013 conf
DNIS
Aastha Madaan, Wanming Chu, Daigo Yaginuma, Subhash Bhalla
2013 C conf
NPC
Yamin Li, Wanming Chu
2012 J jnl
IEICE Trans. Inf. Syst.
Shelly Sachdeva, Daigo Yaginuma, Wanming Chu, Subhash Bhalla
2012 J jnl
Int. J. Netw. Comput.
Yamin Li, Shietung Peng, Wanming Chu
2012 J jnl
Int. J. Comput. Sci. Eng.
Shelly Sachdeva, Aastha Madaan, Wanming Chu
2011 J jnl
Int. J. Found. Comput. Sci.
Yamin Li, Shietung Peng, Wanming Chu
2011 conf
DNIS
Shelly Sachdeva, Daigo Yaginuma, Wanming Chu, Subhash Bhalla
2011 conf
ICA3PP (1)
Yamin Li, Shietung Peng, Wanming Chu
2011 Misc conf
ICNC
Yamin Li, Shietung Peng, Wanming Chu
2011 J jnl
Int. J. Netw. Comput.
Yamin Li, Shietung Peng, Wanming Chu
2011 J jnl
J. Inf. Process. Syst.
Yamin Li, Shietung Peng, Wanming Chu
2011 conf
ICA3PP (1)
Yamin Li, Shietung Peng, Wanming Chu
2011 conf
DNIS
Aastha Madaan, Wanming Chu, Subhash Bhalla
2010 C conf
CIT
Yamin Li, Shietung Peng, Wanming Chu
2010 J jnl
J. Supercomput.
Yamin Li, Shietung Peng, Wanming Chu
2010 Misc conf
ICNC
Yamin Li, Shietung Peng, Wanming Chu
2010 conf
ICA3PP (1)
Yamin Li, Shietung Peng, Wanming Chu
2010 C conf
PDCAT
Yamin Li, Shietung Peng, Wanming Chu
2009 C conf
ICA3PP
Yamin Li, Shietung Peng, Wanming Chu
2009 C conf
PDCAT
Yamin Li, Shietung Peng, Wanming Chu
2009 conf
CIT (1)
Yamin Li, Shietung Peng, Wanming Chu
2009 J jnl
Comput. J.
Yamin Li, Shietung Peng, Wanming Chu
2009 C conf
ICA3PP
Yamin Li, Shietung Peng, Wanming Chu
2009 conf
APPT
Yamin Li, Shietung Peng, Wanming Chu
2008 B conf
AINA
Yamin Li, Shietung Peng, Wanming Chu
2008 C conf
PDCAT
Yamin Li, Shietung Peng, Wanming Chu
2008 conf
ISPAN
Yamin Li, Shietung Peng, Wanming Chu
2008 conf
HICSS
Yamin Li, Shietung Peng, Wanming Chu
2008 B conf
ICPP
Yamin Li, Shietung Peng, Wanming Chu
2007 C conf
PDCAT
Yamin Li, Shietung Peng, Wanming Chu
2007 C conf
PDCAT
Yamin Li, Shietung Peng, Wanming Chu
2006 B conf
MASS
Yamin Li, Shietung Peng, Wanming Chu
2006 C conf
PDCAT
Yamin Li, Shietung Peng, Wanming Chu
2005 conf
ICPADS (1)
Yamin Li, Shietung Peng, Wanming Chu
2005 C conf
PDCAT
Yamin Li, Shietung Peng, Wanming Chu
2005 J jnl
Int. J. High Perform. Comput. Netw.
Yamin Li, Shietung Peng, Wanming Chu
2005 C conf
ISPA
Yamin Li, Shietung Peng, Wanming Chu
2004 conf
PDCS
Yamin Li, Shietung Peng, Wanming Chu
2004 C conf
PDCAT
Yamin Li, Shietung Peng, Wanming Chu
2004 C conf
CIS
Yamin Li, Shietung Peng, Wanming Chu
2004 J jnl
J. Supercomput.
Yamin Li, Shietung Peng, Wanming Chu
2004 conf
Parallel and Distributed Computing and Networks
Yamin Li, Shietung Peng, Wanming Chu
2002 conf
ISPAN
Yamin Li, Shietung Peng, Wanming Chu
2002 C conf
CW
Yamin Li, Shietung Peng, Wanming Chu
2001 A conf
ACSAC
Kenji Watanabe, Wanming Chu, Yamin Li
2000 conf
ACAC
Wanming Chu, Yamin Li
1997 Misc conf
FCCM
Yamin Li, Wanming Chu
1997 C conf
ICCD
Yamin Li, Wanming Chu
1996 C conf
ICCD
Yamin Li, Wanming Chu
1996 Misc conf
FCCM
Yamin Li, Wanming Chu
1996 conf
WCAE@HPCA
Yamin Li, Wanming Chu
1995 conf
Parallel and Distributed Computing and Systems
Yamin Li, Wanming Chu
1995 A* conf
HPCA
Yamin Li, Wanming Chu
tests/unit/test_decompile_arch.py
← Index tests/unit/test_decompile_arch.py python
"""Unit tests for architecture modules:
- bninja/arch/creator.py
- bninja/arch/x86.py
"""
import sys
import pytest

# Install binaryninja stubs before importing arch modules
from tests.unit.conftest_binja_stubs import install_binja_stubs
install_binja_stubs()

from redb.extractors.decompiler.bninja.arch.creator import ArchitectureCreator
from redb.extractors.decompiler.bninja.arch.x86 import Arch_x86


# ============================================================================
# 3a. ArchitectureCreator
# ============================================================================

class TestArchitectureCreator:
    def test_create_x86(self):
        arch = ArchitectureCreator("x86").get()
        assert isinstance(arch, Arch_x86)

    def test_create_x86_case_insensitive(self):
        for name in ["X86", "x86", "X86"]:
            arch = ArchitectureCreator(name).get()
            assert isinstance(arch, Arch_x86)

    def test_unsupported_arch_raises(self):
        with pytest.raises(ValueError, match="Unsupported architecture"):
            ArchitectureCreator("arm").get()


# ============================================================================
# 3b. Arch_x86
# ============================================================================

class TestArch_x86Registers:
    def setup_method(self):
        self.arch = Arch_x86()

    def test_is_register_valid(self):
        assert self.arch.is_register("RAX") is True
        assert self.arch.is_register("eax") is True
        assert self.arch.is_register("XMM0") is True

    def test_is_register_invalid(self):
        assert self.arch.is_register("INVALID_REG") is False

    def test_is_general_purpose_register(self):
        assert self.arch.is_general_purpose_register("RAX") is True
        assert self.arch.is_general_purpose_register("XMM0") is False

    def test_is_stack_register(self):
        assert self.arch.is_stack_register("RSP") is True
        assert self.arch.is_stack_register("RBP") is True
        assert self.arch.is_stack_register("RAX") is False

    def test_is_xmm_register(self):
        assert self.arch.is_xmm_register("XMM0") is True
        assert self.arch.is_xmm_register("RAX") is False


class TestArch_x86OpcodeCategories:
    def setup_method(self):
        self.arch = Arch_x86()

    def test_opcode_categories_populated(self):
        assert len(self.arch.opcode_categories) > 0

    def test_opcode_mov_category(self):
        assert self.arch.opcode_categories["MOV"] == "DATA_MOVEMENT"

    def test_opcode_call_category(self):
        assert self.arch.opcode_categories["CALL"] == "CONTROL_FLOW"

    def test_opcode_add_category(self):
        assert self.arch.opcode_categories["ADD"] == "ARITHMETIC"


class TestArch_x86ControlFlow:
    def setup_method(self):
        self.arch = Arch_x86()

    def test_is_control_flow_instruction_by_mnemonic(self):
        assert self.arch.is_control_flow_instruction_by_mnemonic("JMP") is True
        assert self.arch.is_control_flow_instruction_by_mnemonic("MOV") is False

    def test_is_control_flow_instruction_call(self):
        assert self.arch.is_control_flow_instruction_by_mnemonic("CALL") is True

    def test_is_control_flow_instruction_ret(self):
        assert self.arch.is_control_flow_instruction_by_mnemonic("RET") is True

    def test_is_control_flow_instruction_loop(self):
        assert self.arch.is_control_flow_instruction_by_mnemonic("LOOP") is True

    def test_is_control_flow_instruction_empty(self):
        assert self.arch.is_control_flow_instruction_by_mnemonic("") is False
        assert self.arch.is_control_flow_instruction_by_mnemonic(None) is False