iOS匯編學習一

寫個最簡單的helloword.c方法消别,使用clang命令編譯

#include <stdio.h>

int main() {
  printf("hellow word\n");
  return 0;
}

使用clang -S -arch arm64 -isysrootxcrun --sdk iphoneos --show-sdk-pathhelloword.c杂拨, 其中xcrun --sdk iphoneos --show-sdk-path輸出響應版本sdk的目錄

    .section    __TEXT,__text,regular,pure_instructions
    .build_version ios, 13, 4   sdk_version 13, 4
    .globl  _main                   ; -- Begin function main
    .p2align    2
_main:                                  ; @main
    .cfi_startproc
; %bb.0:
    sub sp, sp, #32             ; =32
    stp x29, x30, [sp, #16]     ; 16-byte Folded Spill
    add x29, sp, #16            ; =16
    .cfi_def_cfa w29, 16
    .cfi_offset w30, -8
    .cfi_offset w29, -16
    stur    wzr, [x29, #-4]
    adrp    x0, l_.str@PAGE
    add x0, x0, l_.str@PAGEOFF
    bl  _printf
    mov w8, #0
    str w0, [sp, #8]            ; 4-byte Folded Spill
    mov x0, x8
    ldp x29, x30, [sp, #16]     ; 16-byte Folded Reload
    add sp, sp, #32             ; =32
    ret
    .cfi_endproc
                                        ; -- End function
    .section    __TEXT,__cstring,cstring_literals
l_.str:                                 ; @.str
    .asciz  "hellow word\n"


.subsections_via_symbols

代碼中類似.section或.globl等以'.'開頭的, 被稱之為編譯器指令
類似_main:l_.str:被稱之為標簽(label), 用于輔助定位代碼或者資源地址
類似pushq或movq的, 被稱之為匯編指令, 它們會被匯編器編譯為機器代碼, 最終被cpu所執(zhí)行

基本匯編知識

寄存器

寄存器是CPU中的高速存儲單元脊串,要比內(nèi)存中存取要快的多。

r0~r30

r0 - r30 是31個通用整形寄存器抒倚。每個寄存器可以存取一個64位大小的數(shù)。 當使用 x0 - x30訪問時,它就是一個64位的數(shù)口糕。當使用w0 - w30訪問時,訪問的是這些寄存器的低32位

1.png

其中r29 又被叫做 fp (frame pointer). r30 又被叫做 lr (link register)

SP

SP寄存器其實就是 x31磕蛇,在指令編碼中景描,使用 SP/WSP來進行對SP寄存器的訪問

V0 – V31

V0 - V31是向量寄存器,也可以說是浮點型寄存器秀撇。它的特點是每個寄存器的大小是 128 位的超棺。 分別可以用Bn Hn Sn Dn Qn的方式來訪問不同的位數(shù)。如圖

2.png

SPRs

SPRs是狀態(tài)寄存器呵燕,用于存放程序運行中一些狀態(tài)標識棠绘。不同于編程語言里面的if else.在匯編中就需要根據(jù)狀態(tài)寄存器中的一些狀態(tài)來控制分支的執(zhí)行。狀態(tài)寄存器又分為 The Current Program Status Register (CPSR)The Saved Program Status Registers (SPSRs)。 一般都是使用CPSR弄唧, 當發(fā)生異常時适肠, CPSR會存入SPSR。當異澈蛞恢復侯养,再拷貝回CPSR
還有一些系統(tǒng)寄存器澄干,還有 FPSR FPCR是浮點型運算時的狀態(tài)寄存器等逛揩。基本了解上面這些寄存器就可以了

棧就是指令執(zhí)行時存放臨時變量的內(nèi)存空間麸俘。在學習匯編代碼的執(zhí)行過程中辩稽,了解棧的結構非常重要。
先列出一些棧的特性:

  • 棧是從高地址到低地址的从媚, 棧低是高地址逞泄,棧頂是低地址。
  • fp指向當前frame的棧底拜效,也就是高地址喷众。
  • sp指向棧頂,也就是地地址紧憾。
    下面的圖簡單的描述了從方法A調(diào)用方法B時 棧是如何劃分的:


    3.jpeg
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末到千,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赴穗,更是在濱河造成了極大的恐慌憔四,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件般眉,死亡現(xiàn)場離奇詭異了赵,居然都是意外死亡,警方通過查閱死者的電腦和手機甸赃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門柿汛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人辑奈,你說我怎么就攤上這事∫芽荆” “怎么了鸠窗?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胯究。 經(jīng)常有香客問我稍计,道長,這世上最難降的妖魔是什么裕循? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任臣嚣,我火速辦了婚禮净刮,結果婚禮上,老公的妹妹穿的比我還像新娘硅则。我一直安慰自己淹父,他們只是感情好,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布怎虫。 她就那樣靜靜地躺著暑认,像睡著了一般。 火紅的嫁衣襯著肌膚如雪大审。 梳的紋絲不亂的頭發(fā)上蘸际,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音徒扶,去河邊找鬼粮彤。 笑死,一個胖子當著我的面吹牛姜骡,可吹牛的內(nèi)容都是我干的导坟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼溶浴,長吁一口氣:“原來是場噩夢啊……” “哼乍迄!你這毒婦竟也來了?” 一聲冷哼從身側響起士败,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤闯两,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谅将,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漾狼,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年饥臂,在試婚紗的時候發(fā)現(xiàn)自己被綠了逊躁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡隅熙,死狀恐怖稽煤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情囚戚,我是刑警寧澤酵熙,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站驰坊,受9級特大地震影響匾二,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一察藐、第九天 我趴在偏房一處隱蔽的房頂上張望皮璧。 院中可真熱鬧,春花似錦分飞、人聲如沸悴务。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惨寿。三九已至,卻和暖如春删窒,著一層夾襖步出監(jiān)牢的瞬間裂垦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工肌索, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蕉拢,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓诚亚,卻偏偏與公主長得像晕换,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子站宗,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355