A Transformational Approach to Binary Translation of Delayed Branches

3Citations
Citations of this article
6Readers
Mendeley users who have this article in their library.

Abstract

A binary translator examines binary code for a source machine and generates code for a target machine. Understanding what to do with delayed branches in binary code can involve tricky case analyses, for example, if there is a branch instruction in a delay slot. This article presents a disciplined method for deriving such case analyses. The method identifies problematic cases, shows the translations for the nonproblematic cases, and gives confidence that all cases are considered. The method supports such common architectures as SPARC, MIPS, and PA-RISC, and it should apply to any tool that analyzes machine instructions. We begin by writing a very simple interpreter for the source machine's code. We then transform the interpreter into an interpreter for a target machine without delayed branches. To maintain the semantics of the program being interpreted, we simultaneously transform the sequence of source-machine instructions into a sequence of target-machine instructions. The transformation of the instructions becomes our algorithm for binary translation.

Cite

CITATION STYLE

APA

Ramsey, N., & Cifuentes, C. (2003). A Transformational Approach to Binary Translation of Delayed Branches. ACM Transactions on Programming Languages and Systems, 25(2), 210–224. https://doi.org/10.1145/641888.641890

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free