Proceedings of the 2009 ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems 2009
DOI: 10.1145/1542452.1542461
|View full text |Cite
|
Sign up to set email alerts
|

Eliminating the call stack to save RAM

Abstract: Most 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 multip… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1

Citation Types

0
4
0

Year Published

2009
2009
2014
2014

Publication Types

Select...
6
1

Relationship

0
7

Authors

Journals

citations
Cited by 11 publications
(4 citation statements)
references
References 28 publications
(11 reference statements)
0
4
0
Order By: Relevance
“…The reason is that a return-oriented rootkit, as demonstrated in [11,19,41], can simply create its own stack -without corrupting existing ones -and misuse other innocent non-ret instructions that are not (or cannot be) enhanced for return address protection. Our transformation of ret instructions is also similar to that of Yang et al [46], which mainly targets to save RAM by eliminating the call stack. However, our system has a different goal that further demands two other compiling techniques to completely remove return opcodes, not merely return instructions.…”
Section: Related Workmentioning
confidence: 99%
“…The reason is that a return-oriented rootkit, as demonstrated in [11,19,41], can simply create its own stack -without corrupting existing ones -and misuse other innocent non-ret instructions that are not (or cannot be) enhanced for return address protection. Our transformation of ret instructions is also similar to that of Yang et al [46], which mainly targets to save RAM by eliminating the call stack. However, our system has a different goal that further demands two other compiling techniques to completely remove return opcodes, not merely return instructions.…”
Section: Related Workmentioning
confidence: 99%
“…However, apart from operating only on Ada programs, this work does not describe their implementation and does not provide any static or runtime results. Yang et al proposed and implemented a "lifting" transformation to move global variables into main's local scope [18]. However, lifting was designed to only work with their other "flattening" transformation that absorbs a function into its caller without making a new copy of the function for each call-site.…”
Section: Related Workmentioning
confidence: 99%
“…5 If the malicious code has complete control over the data memory, techniques such as memory safety [6] and stack canaries cannot prevent the usage of ROP. However, we notice it could be prevented by Control Flow Integrity [1,8,32]. used to implement a rootkit.…”
Section: A Rootkit-based Attackmentioning
confidence: 99%