Walter Murray

40 papers Journal 35Unranked 2
YearRankTypeTitle / Venue / Authors
2022 J jnl
Comput. Optim. Appl.
Michael Haythorpe, Walter Murray
2015 J jnl
J. Sci. Comput.
Youngsoo Choi, Charbel Farhat, Walter Murray, Michael A. Saunders
2015 J jnl
Comput. Optim. Appl.
Walter Murray, Tomas Tinoco De Rubira, Adam Wigington
2015 conf
ISGT
Robert Entriken, Walter Murray, Tomas Tinoco De Rubira
2015 conf
ISGT
Walter Murray, Tomas Tinoco De Rubira, Adam Wigington
2013 J jnl
J. Glob. Optim.
Jerzy A. Filar, Michael Haythorpe, Walter Murray
2012 J jnl
Comput. Optim. Appl.
Walter Murray, Howard Shek
2010 J jnl
Comput. Optim. Appl.
Walter Murray, Kien Ming Ng
2009 ch.
Encyclopedia of Optimization
Walter Murray
2008 J jnl
SIAM J. Discret. Math.
Vladimir Ejov, Jerzy A. Filar, Walter Murray, Giang T. Nguyen
2008 J jnl
Discret. Optim.
Philip E. Gill, Walter Murray, Michael A. Saunders, John A. Tomlin, Margaret H. Wright
2007 J jnl
Comput. Optim. Appl.
Walter Murray, Uday V. Shanbhag
2007 ch.
Milestones in Matrix Computation
Gene H. Golub, Philip E. Gill, Walter Murray, Michael A. Saunders
2006 J jnl
Comput. Optim. Appl.
Walter Murray, Uday V. Shanbhag
2005 J jnl
Comput. Optim. Appl.
Aparna Gupta, Walter Murray
2005 J jnl
SIAM Rev.
Philip E. Gill, Walter Murray, Michael A. Saunders
2003 J jnl
Ann. Oper. Res.
Aparna Gupta, Walter Murray
2002 J jnl
SIAM J. Optim.
Philip E. Gill, Walter Murray, Michael A. Saunders
1997 J jnl
SIAM J. Optim.
Anders Forsgren, Walter Murray
1997 J jnl
Comput. Optim. Appl.
Walter Murray
1995 J jnl
SIAM J. Optim.
Walter Murray, Francisco J. Prieto
1995 J jnl
SIAM J. Sci. Comput.
Anders Forsgren, Philip E. Gill, Walter Murray
1995 J jnl
Math. Program.
Philip E. Gill, Walter Murray, Dulce B. Ponceleon, Michael A. Saunders
1994 J jnl
SIAM J. Optim.
Walter Murray, Margaret H. Wright
1993 J jnl
IEEE Trans. Autom. Control.
James E. Bobrow, Walter Murray
1993 J jnl
SIAM J. Matrix Anal. Appl.
Anders Forsgren, Walter Murray
1992 J jnl
SIAM J. Matrix Anal. Appl.
Philip E. Gill, Walter Murray, Dulce B. Ponceleón, Michael A. Saunders
1991 J jnl
SIAM Rev.
Philip E. Gill, Walter Murray, Michael A. Saunders, Margaret H. Wright
1989 J jnl
Math. Program.
Philip E. Gill, Walter Murray, Michael A. Saunders, Margaret H. Wright
1986 J jnl
Math. Program.
Philip E. Gill, Walter Murray, Michael A. Saunders, John A. Tomlin, Margaret H. Wright
1985 J jnl
Math. Program.
Philip E. Gill, Walter Murray, Michael A. Saunders, G. W. Stewart, Margaret H. Wright
1984 J jnl
Math. Program.
Philip E. Gill, Nicholas I. M. Gould, Walter Murray, Michael A. Saunders, Margaret H. Wright
1984 J jnl
ACM Trans. Math. Softw.
Philip E. Gill, Walter Murray, Michael A. Saunders, Margaret H. Wright
1982 J jnl
Math. Program.
Philip E. Gill, Walter Murray, Michael A. Saunders, Margaret H. Wright
1981 book
Practical optimization.
Philip E. Gill, Walter Murray, Margaret H. Wright
1979 J jnl
Computing
Walter Murray, Michael L. Overton
1979 J jnl
ACM Trans. Math. Softw.
Philip E. Gill, Walter Murray, Susan M. Picken, Margaret H. Wright
1979 J jnl
Math. Program.
Philip E. Gill, Walter Murray
1978 J jnl
Math. Program.
Philip E. Gill, Walter Murray
1974 J jnl
Math. Program.
Philip E. Gill, Walter Murray
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