Mobile devices are constrained in terms of computational power, battery lifetime and memory sizes. Software development for mobile devices is further complicated by application complexity and heterogeneous hardware platforms. Virtual Machines (VMs) abstract from the underlying hardware, but their use with embedded devices can only be justified if the interpretive overhead is kept to a minimum. In this paper we argue that efficient bytecode execution is feasible on mobile devices. We adapt a VM for the C programming language for ARM-based mobile phone platforms. Our VM utilizes latest interpreter technologies to achieve high performance. It offers mixed-mode execution, i.e., code is either executed on the VM or on the CPU, to the advantages of VM-based hardware abstraction with the speed of machine-code. We conduct extensive experiments with the MiBench embedded benchmark suite to evaluate VM-performance and the effectiveness of interpreter optimizations on an ARMbased mobile phone pla...