Computer algorithms: introduction to design and analysis (2nd ed.)
Computer algorithms: introduction to design and analysis (2nd ed.)
Developing IP Multicast Networks
Developing IP Multicast Networks
Fixing DNS Misbehavior Hindering IPv6 Deployment
SAINT-W '06 Proceedings of the International Symposium on Applications on Internet Workshops
DNS and BIND (5th Edition)
Fortran program specialization
ACM SIGPLAN Notices
Scaling up partial evaluation for optimizing the Sun commercial RPC protocol
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Specialization tools and techniques for systematic optimization of system software
ACM Transactions on Computer Systems (TOCS)
Supporting objects in run-time bytecode specialization
ASIA-PEPM '02 Proceedings of the ASIAN symposium on Partial evaluation and semantics-based program manipulation
Partial Evaluation for Class-Based Object-Oriented Languages
PADO '01 Proceedings of the Second Symposium on Programs as Data Objects
Binding-Time Analysis in Partial Evaluation: One Size Does Not Fit All
PSI '99 Proceedings of the Third International Andrei Ershov Memorial Conference on Perspectives of System Informatics
Offline partial evaluation can be as accurate as online partial evaluation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Logical characterizations of heap abstractions
ACM Transactions on Computational Logic (TOCL)
Science of Computer Programming
Recency-Abstraction for heap-allocated storage
SAS'06 Proceedings of the 13th international conference on Static Analysis
Hi-index | 0.00 |
The aim of binding-time analysis is to determine when variables, expressions, statements, etc. in a program can be evaluated by classifying these into static (compile-time) and dynamic (run-time). Explicit separation of binding times has turned out to be crucial for successful self-application of partial evaluators, and apparently, it is also an important stepping-stone for profitable specialization of imperative languages with pointers and dynamic memory allocation. In this paper we present an automatic binding-time analysis for a substantial subset of the C language.The paper has two parts. In the first part, the semantic issues of binding-time separation is discussed with emphasis on pointers and classification of these. This leads to the introduction of a two-level C language where binding times are explicit in the syntax. Finally, well-annotatedness rules are given which excludes non-consistently annotated programs.In the second part, an automatic binding-time analysis based on constraint system solving is developed. The constraints capture the binding-time dependencies between expressions and subexpressions, and a solution to the system gives the binding times of all variables and expressions. We give rules for the generation of constraints, provide normalization rules, and describe how a solution can be found. Given the binding times of expressions, a well-annotated two-level version of the program can easily be constructed. A two-level program can e.g. be input to an offline partial evaluator.