iOS之底層匯編(一)

匯編語言的發(fā)展

機(jī)器語言

  • 由0和1組成的機(jī)器指令
  • 如:0101 0001 1101 0110

匯編語言(assembly language)

  • 使用符號(hào)代替難編寫和很難閱讀機(jī)器語言糜烹,也成為符號(hào)語言察藐。
  • 如:mov鹃骂,ax作煌,bx浮梢,call

高級(jí)語言

  • C/C++/OC/Java/Swift,更讓人易讀和編寫的語言(更接近人類的自然語言)
  • 如:int a = b油猫;

那我們?yōu)槭裁匆獙W(xué)匯編铃绒?

  • 首先,我們來看下高級(jí)語言的代碼在終端設(shè)備上是這樣的過程:
高級(jí)語言運(yùn)行的過程
  • 匯編語言機(jī)器語言一一對(duì)應(yīng), 每一條機(jī)器指令都有與之對(duì)應(yīng)的匯編指令
  • 匯編語言可以通過編譯得到機(jī)器語言户秤,機(jī)器語言可以通過反匯編得到匯編語言
  • 高級(jí)語言可以通過編譯得到匯編語言/機(jī)器語言码秉,但匯編語言/機(jī)器語言幾乎不可能還原成高級(jí)語言

匯編語言的特點(diǎn)

  • 可直接訪問、控制各種硬件設(shè)備鸡号。比如存儲(chǔ)器转砖、CPU等,能最大限度地發(fā)揮硬件的功能
  • 能夠不受編譯器的限制鲸伴,對(duì)生成的二進(jìn)制代碼進(jìn)行完全的控制
  • 目標(biāo)代碼簡短堪藐,占用內(nèi)存少莉兰,執(zhí)行速度快
  • 匯編指令是機(jī)器指令的助記符,同機(jī)器指令一一對(duì)應(yīng)礁竞。每種CPU都有自己的機(jī)器指令集/匯編指令集,所以匯編語言不具備可移植性
  • 匯編語言知識(shí)點(diǎn)過多杉辙,開發(fā)者需要對(duì)CPU等硬件結(jié)構(gòu)有所了解模捂,不宜于編寫、調(diào)試蜘矢、維護(hù)
  • 不區(qū)分大小寫狂男,比如mov和MOV是一樣的

匯編能用來干什么?

  • 編寫驅(qū)動(dòng)程序品腹、操作系統(tǒng)(比如Linux內(nèi)核的某些關(guān)鍵部分)
  • 對(duì)性能要求極高的程序或者代碼片段岖食,可與高級(jí)語言混合使用(內(nèi)嵌匯編)
  • 軟件安全
    • 病毒分析和防治
    • 逆向\加殼\脫殼\破解\外掛\免殺\加密解密\漏洞\黑客
  • 理解整個(gè)計(jì)算機(jī)系統(tǒng)的最佳起點(diǎn)和最有效途徑
  • 為編寫高效代碼打下基礎(chǔ)
  • 弄清楚代碼的本質(zhì)
    • 函數(shù)的本質(zhì)是什么?
    • sizeof
    • ++a + ++a + ++a 底層如何執(zhí)行的?
    • 編譯器到底幫我們干了什么?
    • DEBUG模式和RELEASE模式有什么關(guān)鍵的地方被我們忽略
      最后引用句裝逼的話

越底層越單純舞吭!真正的程序員都需要了解的一門非常重要的語言,匯編!

匯編的種類

  • 目前討論比較多的匯編語言
    • 8086匯編(8086處理器是16bit的CPU)
    • Win32匯編
    • Win64匯編
    • ARM匯編(嵌入式泡垃、Mac、iOS)
  • 我們iPhone里面的用到的是ARM匯編羡鸥,但是不同的設(shè)備也有差異蔑穴。因?yàn)镃PU的架構(gòu)不同
架構(gòu) 設(shè)備
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 iPhone6s , iphone6s plus,iPhone6, iPhone6 plus,iPhone5S ,iPad Air, iPad mini2
  • 因?yàn)閷W(xué)習(xí)要從簡單到難所以建議先從最為經(jīng)典的8086匯編開始
    • 結(jié)構(gòu)簡潔惧浴,容易理解
    • 指令簡單存和,便于記憶
    • 原理相通

幾個(gè)計(jì)算機(jī)必要的常識(shí)

  • 要想學(xué)好匯編,首先需要了解CPU等硬件結(jié)構(gòu)
  • APP/程序的執(zhí)行過程


    簡易執(zhí)行過程
  • 硬件相關(guān)最為重要是CPU/內(nèi)存
  • 在匯編中衷旅,大部分指令都是和CPU與內(nèi)存相關(guān)的
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捐腿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子柿顶,更是在濱河造成了極大的恐慌茄袖,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件九串,死亡現(xiàn)場離奇詭異绞佩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)猪钮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門品山,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人烤低,你說我怎么就攤上這事肘交。” “怎么了扑馁?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵涯呻,是天一觀的道長凉驻。 經(jīng)常有香客問我,道長复罐,這世上最難降的妖魔是什么涝登? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮效诅,結(jié)果婚禮上胀滚,老公的妹妹穿的比我還像新娘。我一直安慰自己乱投,他們只是感情好咽笼,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著戚炫,像睡著了一般剑刑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上双肤,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天施掏,我揣著相機(jī)與錄音,去河邊找鬼杨伙。 笑死其监,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的限匣。 我是一名探鬼主播抖苦,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼米死!你這毒婦竟也來了锌历?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤峦筒,失蹤者是張志新(化名)和其女友劉穎究西,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體物喷,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡卤材,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了峦失。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扇丛。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖尉辑,靈堂內(nèi)的尸體忽然破棺而出帆精,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布卓练,位于F島的核電站隘蝎,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏襟企。R本人自食惡果不足惜嘱么,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望顽悼。 院中可真熱鬧拱撵,春花似錦、人聲如沸表蝙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽府蛇。三九已至,卻和暖如春屿愚,著一層夾襖步出監(jiān)牢的瞬間汇跨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工妆距, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留穷遂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓娱据,卻偏偏與公主長得像蚪黑,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子中剩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 8086匯編 本筆記是筆者觀看小甲魚老師(魚C論壇)《零基礎(chǔ)入門學(xué)習(xí)匯編語言》系列視頻的筆記属铁,在此感謝他和像他一樣...
    Gibbs基閱讀 37,115評(píng)論 8 114
  • 越底層越單純!真正的程序員都需要了解的一門非常重要的語言,匯編! 機(jī)器語言 我們所寫的語言最終安裝在機(jī)器上的是什么...
    瑞陽gg閱讀 583評(píng)論 0 0
  • 匯編總結(jié) 匯編的發(fā)展史 機(jī)械語言 由0和1組成的機(jī)器指令(如:0101 0001 1101 0110) 匯編語言(...
    iChuck閱讀 1,299評(píng)論 1 8
  • 匯編語言的發(fā)展 機(jī)器語言 由0和1組成的機(jī)器指令. 如:0101 0001 1101 0110 匯編語言(asse...
    Stone_熊小叔閱讀 411評(píng)論 0 0
  • 王爽匯編全書知識(shí)點(diǎn)大綱 第一章 基礎(chǔ)知識(shí) 機(jī)器語言 匯編語言的產(chǎn)生 匯編語言的組成 存儲(chǔ)器 cpu對(duì)存儲(chǔ)器的讀寫 ...
    2c3ba901516f閱讀 2,407評(píng)論 0 1