1. A method comprising: determining that a task being executed by a first core of a processor can be executed by a second core of the processor, the first core executing a first operating system that is different from a second operating system executed by the second core, the first core implementing a 64-bit or 32-bit instruction set and being configured to operate at a frequency of at least 100 MHz, the second core implementing a 16-bit or 8-bit instruction set and being configured to operate at a frequency of less than 100 MHz; switching execution of the task from the first core to the second core effective to decrease an amount of energy consumed by the processor, the switching execution comprising: determining, while the task is executing on the first core, respective switch points for execution of the task at an application level, a framework level, and a hardware level; generating, for the respective switch points, state information useful to switch execution of the task at the application level, the framework level, and the hardware level; and switching, at the respective switch points and via the state information, execution of the task from the first core to the second core at the application level, the framework level, and the hardware level.