iPhone手機(jī)使用的是ARM匯編,不同的設(shè)備CPU的架構(gòu)也是不相同的。
armv6: ?iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch
armv7: ?iPhone3GS, iPhone4, iPhone4S,iPad, iPad2, iPad3(The New iPad), iPad mini, iPod Touch 3G, iPod Touch4
armv7s: ?iPhone5, iPhone5C, iPad4(iPad with Retina Display)
arm64: ?iPhone5S 及以后版本.
arm64 經(jīng)常用到的匯編指令:
MOV X1,X0 ;將寄存器X0的值傳送到寄存器X1`
ADD X0,X1,X2 ;寄存器X1和X2的值相加后傳送到X0
SUB X0,X1,X2 ;寄存器X1和X2的值相減后傳送到X0
AND X0,X0,#0xF ; X0的值與0xF相位與后的值傳送到X0
ORR X0,X0,#9 ; X0的值與9相位或后的值傳送到X0
EOR X0,X0,#0xF ; X0的值與0xF相異或后的值傳送到X0
LDR X5,[X6,#0x08] ;X6寄存器加0x08的和的地址值內(nèi)的數(shù)據(jù)傳送到X5
STR X0, [SP,#0x8] ;X0寄存器的數(shù)據(jù)傳送到SP+0x8地址值指向的存儲(chǔ)空間
STP x29, x30, [sp,#0x10] ;入棧指令
LDP x29, x30, [sp,#0x10] ;出棧指令
CBZ ;比較(Compare),如果結(jié)果為零(Zero)就轉(zhuǎn)移(只能跳到后面的指令)
CBNZ ;比較,如果結(jié)果非零(Non Zero)就轉(zhuǎn)移(只能跳到后面的指令)
CMP;比較指令,相當(dāng)于SUBS,影響程序狀態(tài)寄存器CPSR?
B/BL ;絕對(duì)跳轉(zhuǎn)#imm, 返回地址保存到LR(X30)
RET ;子程序返回指令,返回地址默認(rèn)保存在LR(X30)
????????<void doWhileSomeThing(int aa){
?????do {
? ? ? ? aa=aa+aa;
? ? ? ? printf("doWhileSomeThingdoWhileSomeThingdoWhileSomeThing");
? ? } while (aa<100);
}>
<pre>
<code> ? ? ?</code>
</pre>
int doSwiftSome(int a){
? ? switch (a) {
? ? ? ? case 1:
? ? ? ? {
? ? ? ? ? ? printf("switch1111111111");
? ? ? ? }
? ? ? ? break;
? ? ? ? case 2:
? ? ? ? {
? ? ? ? ? ? printf("switch22222222");
? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? case 3:
? ? ? ? {
? ? ? ? ? ? printf("switch333333333");
? ? ? ? }
? ? ? ? ? ? break;
? ? ? ? default:
? ? ? ? ? ? printf("switchdefaultdefaultdefaultdefault");
? ? ? ? ? ? break;
? ? };
? ? return 0;ModelTestViewController
}