Results 1 -
8 of
8
Specifying Representations of Machine Instructions
- ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS
, 1997
"... ..."
Machine descriptions to build tools for embedded systems
- In ACM SIGPLAN Workshop on Languages, Compilers, and Tools for Embedded Systems (LCTES’98), volume 1474 of LNCS
, 1998
"... - CSDL should support a variety of machine-level tools while remaining inde-pendent of any one in particular. ..."
Abstract
-
Cited by 45 (16 self)
- Add to MetaCart
- CSDL should support a variety of machine-level tools while remaining inde-pendent of any one in particular.
Declarative Composition of Stack Frames
"... When a compiler translates a procedure, it must lay out the procedure's stack frame in a way that respects the calling convention. Many ..."
Abstract
-
Cited by 11 (7 self)
- Add to MetaCart
When a compiler translates a procedure, it must lay out the procedure's stack frame in a way that respects the calling convention. Many
Explaining code for publication
- Software Practice and Experience
, 2003
"... The computer science literature discusses code and algorithms extensively, but not always reliably. Tool support can help ensure integrity between code and explanation so that published papers are more reliable. A versatile, light-weight tool to support explaining code for publication is justified, ..."
Abstract
-
Cited by 9 (3 self)
- Add to MetaCart
The computer science literature discusses code and algorithms extensively, but not always reliably. Tool support can help ensure integrity between code and explanation so that published papers are more reliable. A versatile, light-weight tool to support explaining code for publication is justified, described and compared with alternatives. The tool works with Java, C and similar languages, and provides support for publishing explanations of real code in LATEX, XML, HTML, etc.
Automatic Checking of Instruction Specifications
- IN PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING
, 1997
"... Retargeting applications that process machine code is a tedious and error-prone task. We help automate retargeting by describing instruction sets in a high-level specification language and by generating automatically the code for encoding and decoding instructions. Moreover, we provide automated ass ..."
Abstract
-
Cited by 5 (4 self)
- Add to MetaCart
Retargeting applications that process machine code is a tedious and error-prone task. We help automate retargeting by describing instruction sets in a high-level specification language and by generating automatically the code for encoding and decoding instructions. Moreover, we provide automated assistance for checking machine descriptions. We check a specification for consistency both internally and externally. Internal checking forbids impossible instruction specifications, e.g., those that specify two values for a single bit. Internal checking warns about implausible specifications, e.g., those that don't specify values for all bits. Internal checks catch many mistakes, but they cannot guarantee that a specification accurately describes a target machine. Externally, we check a specification for consistency with an independent assembler. This technique increases a user's confidence in a specification's correctness and permits debugging in isolation of the target application. External...
Unparsing Expressions With Prefix and Postfix Operators
, 1998
"... and concrete syntax for infix operators Type rator represents a binary infix operator, which has a text representation, a precedence, and an associativity: hinfixij type precedence = int datatype associativity = LEFT | RIGHT | NONASSOC type rator = string * precedence * associativity This ML cod ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
and concrete syntax for infix operators Type rator represents a binary infix operator, which has a text representation, a precedence, and an associativity: hinfixij type precedence = int datatype associativity = LEFT | RIGHT | NONASSOC type rator = string * precedence * associativity This ML code uses simple integers (int) to represent precedence, an enumeration to represent associativity, and a triple to represent an operator. (In the context of an ML type definition, a * does not represent multiplication; it connects elements of a tuple.) The more general unparser, presented below, shows how to use an arbitrary type, not just string, as an operator's concrete representation. Precedence and associativity determine how infix expressions are parsed into trees, or equivalently, how they are parenthesized. For example, if operator\Omega has higher precedence than operator \Phi, then x \Phi y\Omega z = x \Phi (y\Omega z) and x\Omega y \Phi z = (x\Omega y) \Phi z. When two operato...
Custom Calling Conventions in a . . .
, 2002
"... Calling conventions are so difficult to implement and maintain that people rarely experiment with alternatives. The primary sources of difficulty appear to be parameter passing and stack-frame layout. To implement parameter passing, we use the automata developed by Bailey and Davidson, but we have d ..."
Abstract
- Add to MetaCart
Calling conventions are so difficult to implement and maintain that people rarely experiment with alternatives. The primary sources of difficulty appear to be parameter passing and stack-frame layout. To implement parameter passing, we use the automata developed by Bailey and Davidson, but we have developed a new specification language that is implementable directly in the compiler. To implement stack-frame layout, we have developed an applicative, composable abstraction that cleanly decouples the layout of the stack frame from the order in which compiler phases execute. We hope these abstractions will so simplify the implementation problem that compiler writers will routinely customize calling conventions to improve performance.

