Xianglei Jia

36 papers C 1Journal 35
YearRankTypeTitle / Venue / Authors
2026 J jnl
Int. J. Control
Kaicheng Fu, Xianglei Jia, Shizhou Fu
2025 J jnl
Int. J. Control
Xinxu Ju, Xianglei Jia, Yunyun Weng, Shuo Li
2025 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Xianglei Jia, Shengyuan Xu, Guozeng Cui
2025 J jnl
Int. J. Control
Hongyu Chen, Xianglei Jia, Chengdi Xiang
2024 J jnl
J. Frankl. Inst.
Xianglei Jia, Haitao Cheng, Junfeng Zhang
2024 J jnl
IEEE Trans. Autom. Control.
Xianglei Jia, Shengyuan Xu
2023 J jnl
IEEE Trans. Autom. Control.
Xianglei Jia, Shengyuan Xu, Shaosheng Zhou
2023 J jnl
J. Frankl. Inst.
Fengyu Lin, Junfeng Zhang, Xianglei Jia, Xiaoyue Zhou
2023 J jnl
Trans. Inst. Meas. Control
Chenxu Jiao, Junfeng Zhang, Xianglei Jia, Suhuan Zhang
2023 J jnl
Int. J. Control
Xianglei Jia, Sentao Chen, Haitao Cheng
2023 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Xiaoyue Zhou, Junfeng Zhang, Xianglei Jia, Yinggang Feng
2022 J jnl
J. Frankl. Inst.
Yiming Shao, Xianglei Jia, Junfeng Zhang, Xiaocheng Shi
2022 J jnl
Appl. Math. Comput.
Xinxu Ju, Xianglei Jia, Xiaocheng Shi, Shan-en Yu
2022 J jnl
J. Frankl. Inst.
Weifeng Xia, Yongmin Li, Zuxin Li, Xianglei Jia, Wenbin Chen, Huiying Chen
2022 J jnl
IMA J. Math. Control. Inf.
Yiming Shao, Xianglei Jia, Xinxu Ju, Xiaocheng Shi
2022 J jnl
Eur. J. Control
Xinxu Ju, Xianglei Jia, Xiaocheng Shi, Shizhou Fu
2022 J jnl
Appl. Math. Comput.
Guobao Liu, Xiangyong Chen, Zhongyu Shen, Yajuan Liu, Xianglei Jia
2021 J jnl
Inf. Sci.
Xianglei Jia, Shengyuan Xu, Xiaocheng Shi, Baozhu Du, Zhengqiang Zhang
2021 J jnl
Complex.
Guobao Liu, Shibin Shen, Xianglei Jia
2021 J jnl
J. Frankl. Inst.
Xianglei Jia, Shengyuan Xu, Xiaocheng Shi, Zhengqiang Zhang
2021 J jnl
IEEE Access
Xinxu Ju, Xianglei Jia, Yiming Shao
2020 J jnl
IEEE Access
Xianglei Jia, Ziheng Zhao, Xiaocheng Shi
2020 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Wenhui Liu, Xiaojing Qi, Junwei Lu, Xianglei Jia, Ping Li
2019 J jnl
IMA J. Math. Control. Inf.
Xianglei Jia, Shaosheng Zhou
2019 J jnl
J. Frankl. Inst.
Haoyue Yang, Junfeng Zhang, Xianglei Jia, Shicheng Li
2018 J jnl
Int. J. Syst. Sci.
Junfeng Zhang, Xianglei Jia, Ridong Zhang, Yan Zuo
2018 J jnl
J. Frankl. Inst.
Xianglei Jia, Shengyuan Xu, Junwei Lu, Yongmin Li, Yuming Chu, Zhengqiang Zhang
2018 J jnl
IEEE Access
Junfeng Zhang, Haoyue Yang, Xianglei Jia
2018 C conf
ICARCV
Miao Li, Junfeng Zhang, Xianglei Jia
2017 J jnl
IEEE Trans. Ind. Electron.
Xianglei Jia, Xinkai Chen, Shengyuan Xu, Baoyong Zhang, Zhengqiang Zhang
2017 J jnl
Int. J. Control
Xianglei Jia, Xinkai Chen, Shengyuan Xu
2017 J jnl
IEEE Trans. Autom. Control.
Jun Chen, Shengyuan Xu, Xianglei Jia, Baoyong Zhang
2016 J jnl
IMA J. Math. Control. Inf.
Xianglei Jia, Shengyuan Xu, Qian Ma, Zhidong Qi, Yun Zou
2016 J jnl
Int. J. Control
Xianglei Jia, Shengyuan Xu, Qian Ma, Yongmin Li, Yuming Chu
2015 J jnl
J. Frankl. Inst.
Xianglei Jia, Shengyuan Xu, Jun Chen, Ze Li, Yun Zou
2015 J jnl
J. Frankl. Inst.
Xianglei Jia, Shengyuan Xu, Ticao Jiao, Yuming Chu, Yun Zou
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