Tail Calling Between Code Generated by C and Native Backends

semanticscholar(2018)

引用 0|浏览0
暂无评分
摘要
Compiler backends are typically incompatible; it is not possible to call the code generated by one backend from code generated by another. When writing a new backend, not being able to use the runtime library of an existing backend makes the development process longer and more complex than it should be as everything has to be rewritten from scratch. Having interoperability of code generated by different backends allows code sharing for non-performance critical parts and simplifies the development of new backends. This paper presents an approach used in the Gambit Scheme compiler to seamlessly mix the execution of code generated by C and native backends, by making tail calls and non-tail calls between the two worlds possible. Our approach uses a dual purpose control point representation and bridges which are executed when control jumps from one world to the other. The technique is presented in the context of the ongoing development of Gambit’s native backend which targets the x86-32, x86-64 and ARM architectures. CCS Concepts • Software and its engineering → Retargetable compilers ; Source code generation; Runtime environments;
更多
查看译文
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要