Rahul Jha

32 papers A* 3A 4B 2Misc 1Journal 13Unranked 9
YearRankTypeTitle / Venue / Authors
2025 J jnl
Int. J. Comput. Sci. Math.
Vikas Shinde, Rahul Jha, Dilip Kumar Mishra
2025 A conf
WSDM
Zhankui He, Zhouhang Xie, Harald Steck, Dawen Liang, Rahul Jha, Nathan Kallus, Julian J. McAuley
2024 A conf
RecSys
Zhouhang Xie, Junda Wu, Hyunsik Jeon, Zhankui He, Harald Steck, Rahul Jha, Dawen Liang, Nathan Kallus, Julian J. McAuley
2024 J jnl
CoRR
Zhankui He, Zhouhang Xie, Harald Steck, Dawen Liang, Rahul Jha, Nathan Kallus, Julian J. McAuley
2023 A conf
CIKM
Zhankui He, Zhouhang Xie, Rahul Jha, Harald Steck, Dawen Liang, Yesu Feng, Bodhisattwa Prasad Majumder, Nathan Kallus, Julian J. McAuley
2023 J jnl
CoRR
Zhankui He, Zhouhang Xie, Rahul Jha, Harald Steck, Dawen Liang, Yesu Feng, Bodhisattwa Prasad Majumder, Nathan Kallus, Julian J. McAuley
2021 A conf
EACL
Keping Bi, Rahul Jha, W. Bruce Croft, Asli Celikyilmaz
2021 conf
ACL/IJCNLP (Findings)
Saadia Gabriel, Asli Celikyilmaz, Rahul Jha, Yejin Choi, Jianfeng Gao
2021 conf
NAACL-HLT
Ming Zhong, Da Yin, Tao Yu, Ahmad Zaidi, Mutethia Mutuma, Rahul Jha, Ahmed Hassan Awadallah, Asli Celikyilmaz, Yang Liu, Xipeng Qiu, Dragomir R. Radev
2021 J jnl
CoRR
Ming Zhong, Da Yin, Tao Yu, Ahmad Zaidi, Mutethia Mutuma, Rahul Jha, Ahmed Hassan Awadallah, Asli Celikyilmaz, Yang Liu, Xipeng Qiu, Dragomir R. Radev
2020 J jnl
CoRR
Keping Bi, Rahul Jha, W. Bruce Croft, Asli Celikyilmaz
2020 J jnl
PLoS Comput. Biol.
Kris V. Parag, Christl A. Donnelly, Rahul Jha, Robin N. Thompson
2020 conf
Eval4NLP
Rahul Jha, Keping Bi, Yang Li, Mahdi Pakdaman, Asli Celikyilmaz, Ivan Zhiboedov, Kieran McDonald
2020 J jnl
CoRR
Rahul Jha, Keping Bi, Yang Li, Mahdi Pakdaman, Asli Celikyilmaz, Ivan Zhiboedov, Kieran McDonald
2020 J jnl
CoRR
Saadia Gabriel, Asli Celikyilmaz, Rahul Jha, Yejin Choi, Jianfeng Gao
2019 B conf
CoNLL
Kunho Kim, Rahul Jha, Kyle Williams, Alex Marin, Imed Zitouni
2019 A* conf
AAAI
Sungjin Lee, Rahul Jha
2018 conf
NAACL-HLT (3)
Rahul Jha, Alex Marin, Suvamsh Shivaprasad, Imed Zitouni
2018 J jnl
CoRR
Sungjin Lee, Rahul Jha
2017 J jnl
Nat. Lang. Eng.
Rahul Jha, Amjad Abu-Jbara, Vahed Qazvinian, Dragomir R. Radev
2016 B conf
LREC
Dragomir R. Radev, Amanda Stent, Joel R. Tetreault, Aasish Pappu, Aikaterini Iliakopoulou, Agustin Chanfreau, Paloma de Juan, Jordi Vallmitjana, Alejandro Jaimes, Rahul Jha, Robert Mankoff
2016 J jnl
J. Assoc. Inf. Sci. Technol.
Kathy McKeown, Hal Daumé III, Snigdha Chaturvedi, John Paparrizos, Kapil Thadani, Pablo Barrio, Or Biran, Suvarna Bothe, Michael Collins, Kenneth R. Fleischmann, Luis Gravano, Rahul Jha, Ben King, Kevin McInerney, Taesun Moon, Arvind Neelakantan, Diarmuid Ó Séaghdha, Dragomir R. Radev, Thomas Clay Templeton, Simone Teufel
2015 conf
ACL (1)
Rahul Jha, Catherine Finegan-Dollak, Ben King, Reed Coke, Dragomir R. Radev
2015 J jnl
CoRR
Dragomir R. Radev, Amanda Stent, Joel R. Tetreault, Aasish Pappu, Aikaterini Iliakopoulou, Agustin Chanfreau, Paloma de Juan, Jordi Vallmitjana, Alejandro Jaimes, Rahul Jha, Robert Mankoff
2015 A* conf
AAAI
Rahul Jha, Reed Coke, Dragomir R. Radev
2014 J jnl
Trans. Assoc. Comput. Linguistics
Ben King, Rahul Jha, Dragomir R. Radev
2013 conf
ACL (2)
Rahul Jha, Amjad Abu-Jbara, Dragomir R. Radev
2013 conf
BEA@NAACL-HLT
Amjad Abu-Jbara, Rahul Jha, Eric Morley, Dragomir R. Radev
2013 conf
ACL (2)
Ben King, Rahul Jha, Dragomir R. Radev, Robert Mankoff
2011 conf
ACL (2)
Ahmed Hassan Awadallah, Amjad Abu-Jbara, Rahul Jha, Dragomir R. Radev
2003 A* conf
ICDE
Shaymsunder Gopale, Shridhar Shukla, Rishi Kul, Rahul Jha
2001 Misc conf
HiPC
Rahul Jha, Sridhar Iyer
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