深入理解程序設(shè)計(jì)-使用Linux匯編語(yǔ)言(1)

一泻拦、引言

計(jì)算機(jī)語(yǔ)言分類(lèi):

  • 機(jī)器語(yǔ)言:計(jì)算機(jī)可直接識(shí)別和處理的語(yǔ)言,機(jī)器語(yǔ)言通常是以數(shù)字或數(shù)字串的形式
  • 匯編語(yǔ)言:用易于記憶的字母序列代替數(shù)字命令,匯編語(yǔ)言和機(jī)器語(yǔ)言差不多
  • 高級(jí)語(yǔ)言:高級(jí)語(yǔ)言旨在使編程更容易氨鹏,高級(jí)語(yǔ)言以更接近自然語(yǔ)言的形式表述程序。高級(jí)語(yǔ)言的一條命令压状,往往相當(dāng)于匯編語(yǔ)言的幾條命令

二仆抵、計(jì)算機(jī)體系結(jié)構(gòu)

CPU(中央處理單元)、內(nèi)存

2.1 內(nèi)存結(jié)構(gòu)

  • 內(nèi)存存儲(chǔ)單元
    所有存儲(chǔ)單元都具有相同的固定大小

計(jì)算機(jī)的所有計(jì)算結(jié)果都存儲(chǔ)在內(nèi)存中

2.2 CPU構(gòu)造

CPU一次從內(nèi)存中讀取一條指令并執(zhí)行种冬,CPU執(zhí)行指令的步驟就是:讀取-執(zhí)行周期(指令周期/機(jī)器周期)
包括以下元件

  • 程序計(jì)數(shù)器
    告訴計(jì)算機(jī)從哪里提取下一條指令镣丑,CPU先查看程序計(jì)數(shù)器,提取指定內(nèi)存地址的數(shù)字娱两,傳遞給指令解碼器
  • 指令解碼器
    解釋指令:需要進(jìn)行何種處理(加法传轰、減法、乘法谷婆、移動(dòng)數(shù)據(jù)等)慨蛙,處理過(guò)程中涉及的那些內(nèi)存單元。
    計(jì)算機(jī)指令:實(shí)際指令 + 執(zhí)行指令要用到的內(nèi)存單元
  • 數(shù)據(jù)總線(xiàn)
    取得存儲(chǔ)在內(nèi)存單元中用于計(jì)算的數(shù)據(jù)纪挎,CPU和內(nèi)存間的物理連線(xiàn)期贫,紐帶。計(jì)算機(jī)主板中從內(nèi)存延伸出來(lái)的排線(xiàn)异袄。
  • 寄存器
    特殊的高速存儲(chǔ)單元通砍。CPU中有兩種寄存器:通用寄存器和專(zhuān)用寄存器
    • 通用寄存器:進(jìn)行主要運(yùn)算的地方,CPU中通用寄存器很少,計(jì)算時(shí)絕大多數(shù)信息存儲(chǔ)在主內(nèi)存中封孙,只有CPU處理才能提取到通用寄存器迹冤,處理完成后再放回到內(nèi)存。
    • 專(zhuān)用寄存器:特定用途的寄存器*
  • 算術(shù)邏輯單元
    CPU在取回需要的所有數(shù)據(jù)后虎忌,將數(shù)據(jù)和經(jīng)過(guò)解碼的指令傳遞給算術(shù)邏輯單元處理泡徙。實(shí)際執(zhí)行指令的地方,執(zhí)行完成后將計(jì)算結(jié)果經(jīng)數(shù)據(jù)總線(xiàn)傳到指令指定的相應(yīng)內(nèi)存單元或寄存器膜蠢。

2.3 常見(jiàn)術(shù)語(yǔ)

2.4 內(nèi)存詳解

C語(yǔ)言 memory-layout 內(nèi)存布局


image.png
  • 棧(stack):系統(tǒng)自動(dòng)分配空間堪藐,棧上空間是自動(dòng)分配自動(dòng)回收。棧上的數(shù)據(jù)生存周期只是在函數(shù)的運(yùn)行過(guò)程中挑围,運(yùn)行后就自動(dòng)釋放礁竞。
  • 堆(heap):根據(jù)需要自己申請(qǐng)空間。堆上的數(shù)據(jù)不會(huì)自動(dòng)釋放杉辙,沒(méi)有及時(shí)釋放就會(huì)出現(xiàn)內(nèi)存泄露

2.5 尋址方式

  • 立即尋址:指令本身包含要訪問(wèn)的數(shù)據(jù)模捂。例如寄存器初始化為0,指令直接給出0蜘矢,而不是告訴計(jì)算機(jī)要到那個(gè)地址讀取0
  • 寄存器尋址:指令中包含要訪問(wèn)的寄存器枫绅,而不是內(nèi)存位置
  • 直接尋址:指令中包含要訪問(wèn)的內(nèi)存地址。例如請(qǐng)將地址2002中的數(shù)據(jù)加載到這個(gè)寄存器中
  • 變址尋址:指令中除包含一個(gè)要訪問(wèn)的內(nèi)存地址外硼端,還要指定一個(gè)變址寄存器并淋,其中包含改地址的偏移量。
  • 間接尋址:指令中包含一個(gè)寄存器珍昨,改寄存器中存儲(chǔ)的是指向要訪問(wèn)數(shù)據(jù)的指針县耽。
  • 基址尋址:與間接尋址類(lèi)似,但還須包括一個(gè)叫偏移量的值

for循環(huán)和內(nèi)存尋址有關(guān)系镣典?CPU高速緩存兔毙,緩存中有直接取出,不需尋址兄春,foreach循環(huán)是最快的澎剥。
正在研究中
https://blog.csdn.net/ljyf5593/article/details/6961160

2.6

  • 讀取-執(zhí)行周期的完整生命周期:
    Fetch(取指)->Decode(譯碼)->Execute(執(zhí)行指令)


    指令執(zhí)行周期
  • 如何在計(jì)算機(jī)中表示大于255的數(shù)字?

3.1 編程初體驗(yàn)

3.2

匯編語(yǔ)言需要在開(kāi)發(fā)機(jī)或docker上跑

3.3 為程序做規(guī)劃

  • 條件跳轉(zhuǎn)
  • 無(wú)條件跳轉(zhuǎn)

3.4 查找最大值

實(shí)際手寫(xiě)一遍代碼并理解每一行代碼的意義

學(xué)習(xí)gdb反匯編的使用赶舆,gef

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哑姚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子芜茵,更是在濱河造成了極大的恐慌叙量,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件九串,死亡現(xiàn)場(chǎng)離奇詭異绞佩,居然都是意外死亡寺鸥,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)品山,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)胆建,“玉大人,你說(shuō)我怎么就攤上這事肘交“试兀” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵酸些,是天一觀的道長(zhǎng)宰译。 經(jīng)常有香客問(wèn)我檐蚜,道長(zhǎng)魄懂,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任闯第,我火速辦了婚禮市栗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咳短。我一直安慰自己填帽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布咙好。 她就那樣靜靜地躺著篡腌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪勾效。 梳的紋絲不亂的頭發(fā)上嘹悼,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音层宫,去河邊找鬼杨伙。 笑死,一個(gè)胖子當(dāng)著我的面吹牛萌腿,可吹牛的內(nèi)容都是我干的限匣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼毁菱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼米死!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起贮庞,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤哲身,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后贸伐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體勘天,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脯丝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片商膊。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宠进,靈堂內(nèi)的尸體忽然破棺而出晕拆,到底是詐尸還是另有隱情,我是刑警寧澤材蹬,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布实幕,位于F島的核電站,受9級(jí)特大地震影響堤器,放射性物質(zhì)發(fā)生泄漏昆庇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一闸溃、第九天 我趴在偏房一處隱蔽的房頂上張望整吆。 院中可真熱鬧,春花似錦辉川、人聲如沸表蝙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)府蛇。三九已至,卻和暖如春屿愚,著一層夾襖步出監(jiān)牢的瞬間汇跨,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工渺鹦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扰法,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓毅厚,卻偏偏與公主長(zhǎng)得像塞颁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吸耿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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