Xiao Wang

21 papers A* 4A 4C 1Journal 9Unranked 3
YearRankTypeTitle / Venue / Authors
2016 J jnl
ACM Trans. Model. Perform. Evaluation Comput. Syst.
Qingyun Liu, Xiaohan Zhao, Walter Willinger, Xiao Wang, Ben Y. Zhao, Haitao Zheng
2016 J jnl
IEEE Trans. Dependable Secur. Comput.
Zhi Yang, Jilong Xue, Xiaoyong Yang, Xiao Wang, Yafei Dai
2015 J jnl
J. Comput. Sci. Technol.
Jing Jiang, Zifei Shan, Xiao Wang, Li Zhang, Yafei Dai
2014 C conf
SEKE
Jing Jiang, Xiao Wang, Li Zhang, Yafei Dai
2014 J jnl
ACM Trans. Knowl. Discov. Data
Zhi Yang, Christo Wilson, Xiao Wang, Tingting Gao, Ben Y. Zhao, Yafei Dai
2013 A conf
CIKM
Yin Zhu, Erheng Zhong, Sinno Jialin Pan, Xiao Wang, Minzhe Zhou, Qiang Yang
2013 A* conf
NDSS
Gang Wang, Manish Mohanlal, Christo Wilson, Xiao Wang, Miriam J. Metzger, Haitao Zheng, Ben Y. Zhao
2013 J jnl
ACM Trans. Web
Jing Jiang, Christo Wilson, Xiao Wang, Wenpeng Sha, Peng Huang, Yafei Dai, Ben Y. Zhao
2013 conf
WWW (Companion Volume)
Zhi Yang, Jilong Xue, Han Xiao Zhao, Xiao Wang, Ben Y. Zhao, Yafei Dai
2013 A* conf
INFOCOM
Jilong Xue, Zhi Yang, Xiaoyong Yang, Xiao Wang, Lijiang Chen, Yafei Dai
2013 A* conf
USENIX Security Symposium
Gang Wang, Tristan Konolige, Christo Wilson, Xiao Wang, Haitao Zheng, Ben Y. Zhao
2012 conf
ICDCS Workshops
Jing Jiang, Zifei Shan, Wenpeng Sha, Xiao Wang, Yafei Dai
2012 A* conf
AAAI
Yin Zhu, Xiao Wang, Erheng Zhong, Nathan Nan Liu, He Li, Qiang Yang
2012 J jnl
CoRR
Xiaohan Zhao, Alessandra Sala, Christo Wilson, Xiao Wang, Sabrina Gaito, Haitao Zheng, Ben Y. Zhao
2012 A conf
Internet Measurement Conference
Xiaohan Zhao, Alessandra Sala, Christo Wilson, Xiao Wang, Sabrina Gaito, Haitao Zheng, Ben Y. Zhao
2012 J jnl
CoRR
Sabrina Gaito, Matteo Zignani, Gian Paolo Rossi, Alessandra Sala, Xiao Wang, Haitao Zheng, Ben Y. Zhao
2012 J jnl
CoRR
Gang Wang, Manish Mohanlal, Christo Wilson, Xiao Wang, Miriam J. Metzger, Haitao Zheng, Ben Y. Zhao
2012 conf
SNS
Jing Jiang, Pei Chen, Xiao Wang, Yafei Dai
2011 J jnl
CoRR
Zhi Yang, Christo Wilson, Xiao Wang, Tingting Gao, Ben Y. Zhao, Yafei Dai
2011 A conf
Internet Measurement Conference
Zhi Yang, Christo Wilson, Xiao Wang, Tingting Gao, Ben Y. Zhao, Yafei Dai
2010 A conf
Internet Measurement Conference
Jing Jiang, Christo Wilson, Xiao Wang, Peng Huang, Wenpeng Sha, Yafei Dai, Ben Y. Zhao
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