Hans Eberle

45 papers A* 6A 7B 3C 2Misc 1Journal 9Unranked 17
YearRankTypeTitle / Venue / Authors
2018 A conf
SC
Hans Eberle, Larry Dennison
2017 A conf
IPDPS
Benjamin Klenk, Holger Fröning, Hans Eberle, Larry Dennison
2012 C conf
HPSR
Hans Eberle, Wladek Olesinski
2012 conf
Hot Interconnects
Hans Eberle, Wladek Olesinski
2011 conf
INA-OCMC@HiPEAC
J. Camacho, José Flich, José Duato, Hans Eberle, Wladek Olesinski
2011 C conf
DSD
Jesús Camacho Villanueva, José Flich, José Duato, Hans Eberle, Wladek Olesinski
2010 conf
ANCS
Wladek Olesinski, Hans Eberle
2009 conf
NoCArc@MICRO
Jesús Camacho Villanueva, José Flich, José Duato, Hans Eberle, Nils Gura, Wladek Olesinski
2009 B conf
GLOBECOM
Dimitrios Tsamis, Benjamin Yolken, Nicholas Bambos, Wladek Olesinski, Hans Eberle, Nils Gura
2009 conf
ICC
Wladek Olesinski, Hans Eberle, Nils Gura
2009 conf
Hot Interconnects
Wladek Olesinski, Hans Eberle, Nils Gura, Bob Dickson, Aron J. Silverton, Sumti Jairath, Peter Yakutis
2008 J jnl
Int. J. Embed. Syst.
Hans Eberle, Nils Gura, Sheueling Chang Shantz, Vipul Gupta
2008 conf
ICC
Aditya Dua, Benjamin Yolken, Nicholas Bambos, Wladek Olesinski, Hans Eberle, Nils Gura
2008 A conf
SC
Hans Eberle, Pedro Javier García, José Flich, José Duato, Robert J. Drost, Nils Gura, David Hopkins, Wladek Olesinski
2007 conf
Hot Interconnects
Aditya Dua, Nicholas Bambos, Wladek Olesinski, Hans Eberle, Nils Gura
2007 conf
ANCS
Wladek Olesinski, Nils Gura, Hans Eberle, Andres Mejia
2007 B conf
GLOBECOM
Wladek Olesinski, Hans Eberle, Nils Gura
2005 J jnl
IEEE Micro
Hans Eberle, Sheueling Chang Shantz, Vipul Gupta, Nils Gura, Leonard Rarick, Lawrence Spracklen
2005 conf
ASAP
Hans Eberle, Arvinderpal Wander, Nils Gura, Sheueling Chang Shantz, Vipul Gupta
2005 A* conf
PerCom
Arvinderpal Wander, Nils Gura, Hans Eberle, Vipul Gupta, Sheueling Chang Shantz
2005 A* conf
PerCom
Vipul Gupta, Matthew Millard, Stephen Fung, Yu Zhu, Nils Gura, Hans Eberle, Sheueling Chang Shantz
2005 J jnl
Pervasive Mob. Comput.
Vipul Gupta, Michael Wurm, Yu Zhu, Matthew Millard, Stephen Fung, Nils Gura, Hans Eberle, Sheueling Chang Shantz
2004 conf
ASAP
Hans Eberle, Nils Gura, Sheueling Chang Shantz, Vipul Gupta, Leonard Rarick, Shreyas Sundaram
2004 A conf
CHES
Nils Gura, Arun Patel, Arvinderpal Wander, Hans Eberle, Sheueling Chang Shantz
2004 A* conf
NDSS
Vipul Gupta, Douglas Stebila, Stephen Fung, Sheueling Chang Shantz, Nils Gura, Hans Eberle
2004 Misc conf
VTS
Hans Eberle, Arvinderpal Wander, Nils Gura
2003 conf
ASAP
Hans Eberle, Nils Gura, Sheueling Chang Shantz
2003 J jnl
IEEE Micro
Hans Eberle
2002 A conf
CHES
Nils Gura, Sheueling Chang Shantz, Hans Eberle, Sumit Gupta, Vipul Gupta, Daniel F. Finchelstein, Edouard Goupy, Douglas Stebila
2002 A* conf
CCS
Nils Gura, Hans Eberle, Sheueling Chang Shantz
2002 J jnl
SIGARCH Comput. Archit. News
Hans Eberle
2002 conf
Hot Interconnects
Hans Eberle
2002 A conf
SC
Hans Eberle, Nils Gura
2002 A conf
IPDPS
Nils Gura, Hans Eberle
2000 J jnl
Parallel Distributed Comput. Pract.
Hans Eberle, Daniel Scherrer
2000 conf
The School of Niklaus Wirth
Hans Eberle
1998 conf
EUROMEDIA
Michaela Blott, Hans Eberle
1998 conf
IPPS/SPDP Workshops
Daniel Scherrer, Hans Eberle
1998 A* conf
ISCA
Hans Eberle, Erwin Oertli
1998 J jnl
J. Syst. Archit.
Hans Eberle
1997 J jnl
Inform. Spektrum
Hans Eberle
1997 B conf
ICCCN
Martin Gitsels, Hans Eberle, Christian Kleitsch
1996 conf
ACPC
Hans Eberle
1992 A* conf
CRYPTO
Hans Eberle
1988 J jnl
Microprocess. Microprogramming
Hans Eberle
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