ManuscriptMost programming languages support a call stack in the programming model and also in the runtime system.We show that for applications targeting low-power embedded microcontrollers (MCUs), RAM usage can be significantly decreased by partially or completely eliminating the runtime callstack. We present flattening, a transformation that absorbs a function into its caller, replacing function invocations and returns with jumps. Unlike inlining, flattening does not duplicate the bodies of functions that have multiple callsites. Applied aggressively, flattening results in stack elimination. Flattening is most useful in conjunction with a lifting transformation that moves global variables into a local scope. Flattening and lifting can sav...
As the complexity of embedded systems grows, there is an increasing use of operating systems (OSes) ...
In this paper, we present a novel linear time algorithm for data remapping that is (i) lightweight, ...
The performance of the memory hierarchy has become one of the most critical elements in the performa...
ManuscriptWe present offline RAM compression, an automated source-to-source transformation that redu...
textThe programming language and underlying hardware determine application performance, and both ar...
ManuscriptAn important correctness criterion for software running on embedded microcontrollers is st...
As embedded systems embrace ever more complicated microcontrollers, they present both new capability...
Over the past decade, microprocessor design strategies have focused on increasing the computational ...
The embedded market has always been a major source of income to the semiconductor market. As both g...
Most compiler optimizations focus on saving time and sometimes occur at the expense of increasing si...
This work aims to reduce the power consumed in the instruction memory of instruction set processors ...
The value of a variable is often given by a eld of a heap cell, and frequently the program will pic...
Program redundancy analysis and optimization have been an important component in optimizing compiler...
Using a stack for managing the local state of procedures as popularized by Algol is a simple but eff...
Out-of-core applications consume physical resources at a rapid rate, causing interactive application...
As the complexity of embedded systems grows, there is an increasing use of operating systems (OSes) ...
In this paper, we present a novel linear time algorithm for data remapping that is (i) lightweight, ...
The performance of the memory hierarchy has become one of the most critical elements in the performa...
ManuscriptWe present offline RAM compression, an automated source-to-source transformation that redu...
textThe programming language and underlying hardware determine application performance, and both ar...
ManuscriptAn important correctness criterion for software running on embedded microcontrollers is st...
As embedded systems embrace ever more complicated microcontrollers, they present both new capability...
Over the past decade, microprocessor design strategies have focused on increasing the computational ...
The embedded market has always been a major source of income to the semiconductor market. As both g...
Most compiler optimizations focus on saving time and sometimes occur at the expense of increasing si...
This work aims to reduce the power consumed in the instruction memory of instruction set processors ...
The value of a variable is often given by a eld of a heap cell, and frequently the program will pic...
Program redundancy analysis and optimization have been an important component in optimizing compiler...
Using a stack for managing the local state of procedures as popularized by Algol is a simple but eff...
Out-of-core applications consume physical resources at a rapid rate, causing interactive application...
As the complexity of embedded systems grows, there is an increasing use of operating systems (OSes) ...
In this paper, we present a novel linear time algorithm for data remapping that is (i) lightweight, ...
The performance of the memory hierarchy has become one of the most critical elements in the performa...