Carla Rognoni

20 papers A 1B 2Misc 1Journal 2Unranked 13
YearRankTypeTitle / Venue / Authors
2015 J jnl
Artif. Intell. Medicine
Lucia Sacchi, Stefania Rubrichi, Carla Rognoni, Silvia Panzarasa, Enea Parimbelli, Andrea Mazzanti, Carlo Napolitano, Silvia G. Priori, Silvana Quaglini
2015 conf
MedInfo
Enea Parimbelli, Gabriella Fizzotti, Caterina Pistarini, Carla Rognoni, Silvana Quaglini
2015 conf
MIE
Gabriella Fizzotti, Carla Rognoni, Arianna Imarisio, Alessandro Meneghini, Caterina Pistarini, Silvana Quaglini
2014 conf
MIE
Carla Rognoni, Gabriella Fizzotti, Caterina Pistarini, Silvana Quaglini
2013 B conf
AIME
Lucia Sacchi, Carla Rognoni, Stefania Rubrichi, Silvia Panzarasa, Silvana Quaglini
2012 conf
EFMI-STC
M. Cristina Mazzoleni, Carla Rognoni, Marco Pagani, Marcello Imbriani
2011 conf
EFMI-STC
M. Cristina Mazzoleni, Carla Rognoni, Enrico Finozzi, Tommaso Gri, Marco Pagani, Marcello Imbriani
2011 conf
MIE
M. Cristina Mazzoleni, Carla Rognoni, Enrico Finozzi, Ines Giorgi, Marco Pagani, Marcello Imbriani
2010 conf
MedInfo
M. Cristina Mazzoleni, Carla Rognoni, Enrico Finozzi, Mauro Landro, Edda Maria Capodaglio, Marcello Imbriani, Ines Giorgi
2009 conf
MIE
Maria Franchi, Ines Giorgi, Carla Rognoni, Edda Maria Capodaglio, Giacomo Bazzini, Christine Broughton, M. Cristina Mazzoleni
2009 conf
MIE
M. Cristina Mazzoleni, Carla Rognoni, Enrico Finozzi, Ines Giorgi, Franco Pugliese, Mauro Landro, Marcello Imbriani
2008 conf
MIE
M. Cristina Mazzoleni, Carla Rognoni, Enrico Finozzi, Ines Giorgi, Franco Pugliese, Marco Pagani, Marcello Imbriani
2007 conf
MedInfo
Angelo Nuzzo, Daniele Segagni, Giuseppe Milani, Carla Rognoni, Riccardo Bellazzi
2005 conf
AAAI Spring Symposium: Challenges to Decision Support in a Changing World
Carla Rognoni, Toni Giorgino, Silvana Quaglini, Mario Stefanelli, Eugenia Marchesi, Jordan Baccheschi
2005 J jnl
Int. J. Medical Informatics
Toni Giorgino, Ivano Azzini, Carla Rognoni, Silvana Quaglini, Mario Stefanelli, Roberto Gretter, Daniele Falavigna
2005
Carla Rognoni
2003 conf
MIE
Ivano Azzini, Daniele Falavigna, Toni Giorgino, Roberto Gretter, Silvana Quaglini, Carla Rognoni, Mario Stefanelli
2002 A conf
INTERSPEECH
Cristiana Armaroli, Ivano Azzini, Lorenza Ferrario, Toni Giorgino, Luca Nardelli, Marco Orlandi, Carla Rognoni
2002 Misc conf
AMIA
Ivano Azzini, Daniele Falavigna, Toni Giorgino, Roberto Gretter, Silvana Quaglini, Carla Rognoni, Mario Stefanelli
2001 B conf
AIME
Silvana Quaglini, Carla Rognoni, Anna Cavallini, Giuseppe Micieli
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