Type systems that allow control over low-level compilation details have been developed in the context of resource aware compilation, e.g. for circuit synthesis or for programming with logarithmic space. It was recently observed that some compilation techniques developed in this context, while motivated by capturing certain resource usage restrictions, are closely related to standard compilation techniques, such as CPS translation and defunctionalization. Previous results of this kind suggest to investigate type systems for resource aware compilation more generally with regard to their applicability to structuring general low-level languages, e.g. as used in compilers.In this paper we study how ideas developed for the LOGSPACE type system INTML can be used for organising the programs in a first-order low-level language. We do so using a type system that simplifies and extends INTML, in particular with parametric polymorphism. The type system is simple but flexible, allowing the definition of combinators, such as for tail recursion, recursion, mutable variables or coroutines, in the language itself. We show that it supports separate compilation and consider its performance using an experimental implementation. For reasoning about the low-level programs represented in the type system, we develop an equational theory based on relational parametricity.