一、程序的本質(zhì)
? ? ? ? 軟件/程序的執(zhí)行過程:?

二、寄存器與內(nèi)存
? ? CPU將內(nèi)存中的數(shù)據(jù)存儲到寄存器中,然后在對寄存器中的數(shù)據(jù)進行計算

? ? 上圖所示:

三、編程語言的發(fā)展
? ? ? ? 匯編語言與機器語言一一對應(yīng),每一條機器指令都有與之對應(yīng)的匯編指令
? ? ? ? 匯編語言可以通過編譯得到機器語言,機器語言可以通過反編譯得到匯編語言
? ? ? ? 高級語言可以通過編譯得到匯編/機器語言,但是匯編.機器語言幾乎不可能還原高級語言

四、匯編語言的種類
? ? 匯編語言嚴重依賴硬件環(huán)境,iOS主要的匯編語言是
? ? ①AT&T匯編 ——> iOS模擬器
????②ARM匯編?——> iOS真機設(shè)備
五、寄存器
? ? ? ? ①有16個常用寄存器
? ? ? ? rax、rbx、rcx、rdx、rsi、rdi、rbp、rsp、
? ? ? ? r8、?r9、?r10、?r11、?r12、?r13、?r14、r15
? ? ? ? ②寄存器的具體用途
? ? ? ? rax、rdx常用作函數(shù)返回值
? ? ? ? rdi、rsi、rdx、rcx、r8、r9等常用語存放函數(shù)參數(shù)
? ? ? ? rsp、rbp用于棧操作
? ? ? ? rip作為指令指針
? ? ? ? 【注意】
? ? ? ? ①rip存儲著CPU下一條執(zhí)行的指令的地址
? ? ? ? ②一旦CPU讀取一條指令,rip會自動指向下一條指令
六、常見的匯編指令 AT&T匯編

七、LLDB常用指令


八、內(nèi)存命名規(guī)律
內(nèi)存地址格式:0xbdc(%rip)? ??全局變量? ??全局區(qū)
內(nèi)存地址格式:-0x78(%rbp)? ? 局部變量? ? ??臻g
內(nèi)存地址格式:-0x10(%rax)? ? ?堆空間
Swift學習日記7(匯編)