Kasidit Chanchio

27 papers A 2B 4C 4Journal 5Unranked 12
YearRankTypeTitle / Venue / Authors
2023 conf
JCSSE
Tinnaphob Angkaprasert, Kasidit Chanchio
2019 conf
CCIOT
Kasidit Chanchio
2019 conf
JCSSE
Jumpol Yaothanee, Kasidit Chanchio
2018 conf
JCSSE
Chayawat Pechwises, Kasidit Chanchio
2017 C conf
SNPD
Kasidit Chanchio, Phithak Thaenkaew
2015 conf
CANDAR
Kasidit Chanchio
2014 B conf
CCGRID
Kasidit Chanchio, Phithak Thaenkaew
2011 B conf
NCA
Vasinee Siripoonya, Kasidit Chanchio
2009 C conf
CLUSTER
Hong Ong, Natthapol Saragol, Kasidit Chanchio, Chokchai Leangsuksun
2008 J jnl
Int. J. Crit. Infrastructures
Meili Chen, Al Geist, David E. Bernholdt, Kasidit Chanchio, Daniel L. Million
2007 J jnl
CoRR
David E. Bernholdt, Shishir Bharathi, David Brown, Kasidit Chanchio, Meili Chen, Ann L. Chervenak, Luca Cinquini, Bob Drach, Ian T. Foster, Peter Fox, José García, Carl Kesselman, Rob S. Markel, Don Middleton, Veronika Nefedova, Line Pouchard, Arie Shoshani, Alex Sim, Gary Strand, Dean N. Williams
2005 conf
HPCS
Kshitij Limaye, Box Leangsuksun, Venkata K. Munganuru, Zeno Greenwood, Stephen L. Scott, Richard Libby, Kasidit Chanchio
2005 C conf
CLUSTER
Kshitij Limaye, Box Leangsuksun, Zeno Greenwood, Stephen L. Scott, Christian Engelmann, Richard Libby, Kasidit Chanchio
2005 conf
GRID
Kshitij Limaye, Box Leangsuksun, Yudan Liu, Zeno Greenwood, Stephen L. Scott, Richard Libby, Kasidit Chanchio
2005 conf
ICCSA (3)
Meili Chen, Al Geist, David E. Bernholdt, Kasidit Chanchio, Daniel L. Million
2005 J jnl
Proc. IEEE
David E. Bernholdt, Shishir Bharathi, David Brown, Kasidit Chanchio, Meili Chen, Ann L. Chervenak, Luca Cinquini, Bob Drach, Ian T. Foster, Peter Fox, José García, Carl Kesselman, Rob S. Markel, Don Middleton, Veronika Nefedova, Line Pouchard, Arie Shoshani, Alex Sim, Gary Strand, Dean N. Williams
2004 J jnl
IEEE Trans. Computers
Kasidit Chanchio, Xian-He Sun
2003 B conf
CCGRID
Line Pouchard, Luca Cinquini, Bob Drach, Don Middleton, David E. Bernholdt, Kasidit Chanchio, Ian T. Foster, Veronika Nefedova, David Brown, Peter Fox, José García, Gary Strand, Dean N. Williams, Ann L. Chervenak, Carl Kesselman, Arie Shoshani, Alex Sim
2003 C conf
CLUSTER
Cong Du, Xian-He Sun, Kasidit Chanchio
2002 J jnl
Softw. Pract. Exp.
Kasidit Chanchio, Xian-He Sun
2002 conf
ICPP Workshops
Kasidit Chanchio, Xian-He Sun
2001 A conf
ICDCS
Kasidit Chanchio, Xian-He Sun
2001 B conf
ICPP
Kasidit Chanchio, Xian-He Sun
2001 A conf
IPDPS
Kasidit Chanchio, Xian-He Sun
1999 conf
PP
Xian-He Sun, Vijay K. Naik, Kasidit Chanchio
1998 conf
IPPS/SPDP
Kasidit Chanchio, Xian-He Sun
1996 conf
ICPP, Vol. 3
Kasidit Chanchio, Xian-He Sun
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