Type-extension type test can be performed in constant time
ACM Transactions on Programming Languages and Systems (TOPLAS)
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Fast static analysis of C++ virtual function calls
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Efficient type inclusion tests
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A study of dead data members in C++ applications
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Practical virtual method call resolution for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Scalable propagation-based call graph construction algorithms
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A study of devirtualization techniques for a Java Just-In-Time compiler
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Type-based analysis and applications
PASTE '01 Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Using types to analyze and optimize object-oriented programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient implementation of Java interfaces: Invokeinterface considered harmless
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Java Language Specification
The Java Language Specification
Practical extraction techniques for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Space- and Time-Efficient Implementation of the Java Object Model
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
Data size optimizations for java programs
Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems
The nesC language: A holistic approach to networked embedded systems
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Lightweight confinement for featherweight java
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Heap compression for memory-constrained Java environments
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
A dynamic operating system for sensor nodes
Proceedings of the 3rd international conference on Mobile systems, applications, and services
Optimizing transforms for java and .net closed systems
Optimizing transforms for java and .net closed systems
VMSTAR: synthesizing scalable runtime environments for sensor networks
Proceedings of the 3rd international conference on Embedded networked sensor systems
Eventrons: a safe programming construct for high-frequency hard real-time applications
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Building up to macroprogramming: an intermediate language for sensor networks
IPSN '05 Proceedings of the 4th international symposium on Information processing in sensor networks
Service configurator: a pattern for dynamic configuration of services
COOTS'97 Proceedings of the 3rd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 3
Efficient type and memory safety for tiny embedded systems
Proceedings of the 3rd workshop on Programming languages and operating systems: linguistic support for modern operating systems
Interface contracts for TinyOS
Proceedings of the 6th international conference on Information processing in sensor networks
Harbor: software-based memory protection for sensor nodes
Proceedings of the 6th international conference on Information processing in sensor networks
The ExoVM system for automatic VM and application reduction
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Offline compression for on-chip ram
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
A system for coarse grained memory protection in tiny embedded processors
Proceedings of the 44th annual Design Automation Conference
Vertical object layout and compression for fixed heaps
CASES '07 Proceedings of the 2007 international conference on Compilers, architecture, and synthesis for embedded systems
Efficient memory safety for TinyOS
Proceedings of the 5th international conference on Embedded networked sensor systems
No bit left behind: the limits of heap data compression
Proceedings of the 7th international symposium on Memory management
Eliminating the call stack to save RAM
Proceedings of the 2009 ACM SIGPLAN/SIGBED conference on Languages, compilers, and tools for embedded systems
Analyzing Real-Time Event-Driven Programs
FORMATS '09 Proceedings of the 7th International Conference on Formal Modeling and Analysis of Timed Systems
Vertical object layout and compression for fixed heaps
Semantics and algebraic specification
From OO to FPGA: fitting round objects into square hardware?
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Efficient compilation of .NET programs for embedded systems
Proceedings of the Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems
Toward a unified object model for cyber-physical systems
Proceedings of the 2nd Workshop on Software Engineering for Sensor Network Applications
A compiler and runtime for heterogeneous computing
Proceedings of the 49th Annual Design Automation Conference
Harmonizing classes, functions, tuples, and type parameters in virgil iii
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Safe system-level concurrency on resource-constrained nodes
Proceedings of the 11th ACM Conference on Embedded Networked Sensor Systems
Hi-index | 0.00 |
Embedded microcontrollers are becoming increasingly prolific, serving as the primary or auxiliary processor in products and research systems from microwaves to sensor networks. Microcontrollers represent perhaps the most severely resource-constrained embedded processors, often with as little as a few bytes of memory and a few kilobytes of code space. Language and compiler technology has so far been unable to bring the benefits of modern object-oriented languages to such processors. In this paper, I will present the design and implementation of Virgil, a lightweight object-oriented language designed with careful consideration for resource-limited domains. Virgil explicitly separates initialization time from runtime, allowing an application to build complex data structures during compilation and then run directly on the bare hardware without a virtual machine or any language runtime. This separation allows the entire program heap to be available at compile time and enables three new data-sensitive optimizations: reachable members analysis, reference compression, and ROM-ization. Experi-mental results demonstrate that Virgil is well suited for writing microcontroller programs, with five demonstrative applications fitting in less than 256 bytes of RAM with fewer than 50 bytes of metadata. Further results show that the optimizations presented in this paper reduced code size between 20% and 80% and RAM size by as much as 75%.