Remember, machine language is just another language except it is one tailored to processors. So, I should have said "and/or" instead of just "or" in the parent post. For operating systems, the APIs can be high-level thunked so you could do something like translate DirectX calls on Windows 7 to an equivalent library on an ARM Linux machine. The program code is recompiled but the libraries the program code calls are native to the destination device. DirectX is also just another "hardware feature." You can thunk DirectX in exactly the same way you would thunk a VGA card. The recompiler doesn't care - all that matters is that the calls from recompiled code go to equivalents, no matter how high or low level those may be.