ARMv7 is the processor instruction set used starting with the S5L8920 in the iPhone 3GS and in all subsequent devices. Processors that support ARMv7 instructions are backward compatible with ARMv6 instructions, but attempting to run binaries compiled for ARMv7 on older, ARMv6 processors will result in the error: "Bad CPU type in executable".
The instructions are more efficient and numerous than the older ARMv6 instructions, resulting in a smaller binary and faster execution time. The official SDK allows developers to choose to compile for only ARMv6 or a hybrid ARMv6/ARMv7 binary.
The applications and libraries that are built into iOS for ARMv7 devices do not contain the ARMv6 binaries, so the code will not run on the older processors. This is likely because Apple wants to keep the iOS filesize down and not include unnecessary "junk". It could also serve as a side-benefit for Apple because it prohibits older processors from running "premium features" like Voice Control on an iPhone 3G.
|This hardware article is a "stub", an incomplete page. Please add more content to this article and remove this tag.|