Jaime Mora-Vargas

30 papers Journal 18Unranked 12
YearRankTypeTitle / Venue / Authors
2025 J jnl
Networks
Marisol S. Romero-Mancilla, Jaime Mora-Vargas, Angel Ruiz
2025 J jnl
Comput. Stat.
Marco Antonio Montúfar-Benítez, Jaime Mora-Vargas, Carlos Arturo Soto-Campos, Gilberto Pérez-Lechuga, José Raúl Castro Esparza
2025 J jnl
Comput.
Marco Antonio Montúfar-Benítez, Jaime Mora-Vargas, Jose Ramón Corona-Armenta, Gustavo Erick Anaya Fuentes, Héctor Rivera-Gómez, Mayra Rivera-Anaya
2024 J jnl
Computación y Sistemas (CyS)
Ana Bricia Galindo-Muro, Jaime Mora-Vargas, Laetitia Dablanc, Miguel Gastón Cedillo-Campos
2024 J jnl
Ann. Oper. Res.
Carlos Mario Pérez-González, Jaime Mora-Vargas, Jared Piña-Barcenas, Miguel Gastón Cedillo-Campos
2023 J jnl
Res. Comput. Sci.
Galo Ruiz-Soto, Miguel González-Mendoza, Jaime Mora-Vargas
2020 conf
MICAI (1)
Ana Bricia Galindo-Muro, Jaime Mora-Vargas, Miguel Gastón Cedillo-Campos, Fabiola Regis-Hernández
2020 J jnl
Wirel. Networks
Jonnatan Fernando Avilés-González, Jaime Mora-Vargas, Neale R. Smith, Miguel Gastón Cedillo-Campos
2019 conf
MICAI
Cesar J. Montiel Moctezuma, Jaime Mora-Vargas, Miguel González-Mendoza
2018 J jnl
Soft Comput.
Ivan Adrian Lopez Sanchez, Jaime Mora-Vargas, Cipriano A. Santos, Miguel González-Mendoza, Cesar J. Montiel Moctezuma
2016 J jnl
Int. J. Comb. Optim. Probl. Informatics
Elma Irais Mora-Ochomogo, Jaime Mora-Vargas, Marco Serrato
2015 J jnl
Res. Comput. Sci.
Fernando Gudiño-Peñaloza, Miguel González-Mendoza, Jaime Mora-Vargas
2014 J jnl
Expert Syst. Appl.
Miguel González-Mendoza, Rodolfo Ibarra-Orozco, Ariel L. García-Gamboa, Neil Hernández-Gress, Jaime Mora-Vargas, Juan Carlos López Pimentel
2014 conf
MICAI (2)
Ivan Adrian Lopez Sanchez, Jaime Mora-Vargas, Cipriano A. Santos, Miguel González-Mendoza
2013 J jnl
Res. Comput. Sci.
Ángel Ruiz Bartolomé, Ivo Erasmo Buzón Cantera, Jaime Mora-Vargas, Patrick Soriano
2013 conf
MICAI (Special Sessions)
Fernando Gudiño-Peñaloza, Miguel González-Mendoza, Jaime Mora-Vargas, Neil Hernández-Gress
2009 conf
MICAI
Juan Frausto Solís, Elizabeth Santiago D., Jaime Mora-Vargas
2009 conf
MICAI
Ariel García-Gamboa, Neil Hernández-Gress, Miguel González-Mendoza, Jaime Mora-Vargas
2008 conf
MICAI
Juan Frausto Solís, Federico Alonso-Pecina, Jaime Mora-Vargas
2006 J jnl
Res. Comput. Sci.
Ariel L. García-Gamboa, Jaime Mora-Vargas, Miguel Gonzalez, Neil Hernández-Gress, Rodolfo Ibarra-Orozco
2006 J jnl
Res. Comput. Sci.
Ariel L. García-Gamboa, Jaime Mora-Vargas, Miguel González, Neil Hernández-Gress, Rodolfo Ibarra-Orozco
2006 conf
CIMCA/IAWTIC
Ariel L. García-Gamboa, Miguel González-Mendoza, Rodolfo Ibarra-Orozco, Jaime Mora-Vargas, Neil Hernández-Gress
2006 conf
AMCIS
Isaías Romero, Rodolfo Ibarra-Orozco, Miguel González-Mendoza, Jaime Mora-Vargas
2005 conf
ICANN (2)
Ariel García-Gamboa, Neil Hernández-Gress, Miguel González-Mendoza, Rodolfo Ibarra-Orozco, Jaime Mora-Vargas
2005 conf
MICAI
Ariel García-Gamboa, Miguel González-Mendoza, Rodolfo Ibarra-Orozco, Neil Hernández-Gress, Jaime Mora-Vargas
2005 J jnl
Res. Comput. Sci.
Jaime Mora-Vargas, Miguel González-Mendoza, Neil Hernández-Gress
2005 conf
ISSADS
Rodolfo Ibarra-Orozco, Neil Hernández-Gress, Juan Frausto Solís, Jaime Mora-Vargas
2001 J jnl
Genet. Program. Evolvable Mach.
Christopher R. Stephens, Jaime Mora-Vargas
2000 J jnl
Genet. Program. Evolvable Mach.
Christopher R. Stephens, Jaime Mora-Vargas
1998 J jnl
Artif. Life
Christopher R. Stephens, I. Garcia Olmedo, Jaime Mora-Vargas, Henri Waelbroeck
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