Difference between revisions of "ARMv7"

From The iPhone Wiki
Jump to: navigation, search
m (fix casing, links)
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
[[ARMv7]] is the processor instruction set used starting with the [[S5L8920]] in the [[N88ap|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".
+
[[ARMv7]] is the processor instruction set used starting with the [[S5L8920]] in the [[N88AP|iPhone 3GS]], [[S5L8922]], [[S5L8930]], [[S5L8940]], [[S5L8942]], [[S5L8945]], [[S5L8950]], and [[S7002]] devices. Processors that support ARMv7 instructions maintain backwards compatibility with [[ARMv6]] instructions.
   
==Benefits==
+
== Benefits ==
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 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 universal [[ARMv6]]/ARMv7 binary.
   
  +
== Implementation drawback ==
==Negatives==
 
  +
iOS 4.1 and older require binaries to contain ARMv6 instructions, regardless if the program is intended only for an ARMv7-capable device. iOS 4.2 drops this requirement, as ARMv6 support was dropped in the following version of iOS.
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 [[N82ap|iPhone 3G]].
 
  +
  +
== Notes ==
  +
Despite the fact that iOS supports universal binaries, iOS system binaries are not universal; they will only work with their intended architecture. This helps keep file sizes down, and prevents older processors from using newer features without the possibility of enabling such functionality.
   
 
{{stub|hardware}}
 
{{stub|hardware}}

Latest revision as of 21:13, 4 July 2016

ARMv7 is the processor instruction set used starting with the S5L8920 in the iPhone 3GS, S5L8922, S5L8930, S5L8940, S5L8942, S5L8945, S5L8950, and S7002 devices. Processors that support ARMv7 instructions maintain backwards compatibility with ARMv6 instructions.

Benefits

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 universal ARMv6/ARMv7 binary.

Implementation drawback

iOS 4.1 and older require binaries to contain ARMv6 instructions, regardless if the program is intended only for an ARMv7-capable device. iOS 4.2 drops this requirement, as ARMv6 support was dropped in the following version of iOS.

Notes

Despite the fact that iOS supports universal binaries, iOS system binaries are not universal; they will only work with their intended architecture. This helps keep file sizes down, and prevents older processors from using newer features without the possibility of enabling such functionality.

Hacking.png This hardware article is a "stub", an incomplete page. Please add more content to this article and remove this tag.