[061][x86匯編語言]第16章 源碼分析 過程[allocate_a_4K_page] 匯編指令bts

學(xué)習(xí)筆記

《x86匯編語言:從實(shí)模式到保護(hù)模式》
http://www.reibang.com/p/d481cb547e9f

詳細(xì)調(diào)用關(guān)系以及過程在整個內(nèi)核程序中的作用

參見 http://www.reibang.com/p/2dba8674e8fd

內(nèi)核程序:過程[allocate_a_4K_page] 邏輯執(zhí)行圖解

過程[allocate_a_4K_page]

取自源碼文件 c16_core.asm

         page_bit_map     db  0xff,0xff,0xff,0xff,0xff,0x55,0x55,0xff
                          db  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
                          db  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
                          db  0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
                          db  0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55
                          db  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                          db  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
                          db  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
         page_map_len     equ $-page_bit_map
allocate_a_4k_page: ;分配一個4KB的頁
                    ;輸入:無
                    ;輸出:EAX=頁的物理地址
    push ebx
    push ecx
    push edx
    push ds
    
    mov eax,core_data_seg_sel
    mov ds,eax
    
    xor eax,eax
.b1:
    bts [page_bit_map],eax
    jnc .b2
    inc eax
    cmp eax,page_map_len
    j1 .b1
    
    mov ebx,message_3
    call sys_routine_seg_sel:put_string
    hlt
    
.b2:
    shl eax,12 ;乘以4096(0x1000)
    
    pop ds
    pop edx
    pop ecx
    pop ebx
    
    ret

匯編指令 bts

bts [page_bit_map],eax 中 eax 的作用是什么寄狼?

  • bts bts [page_bit_map], 0 伐割,取標(biāo)號指向的位串的第0位比特值,并送往CF寄存器,將原比特置為1歼捐;
  • bts bts [page_bit_map], 1 ,取標(biāo)號指向的位串的第1位比特值,并送往CF寄存器铁孵,將原比特置為1
  • bts bts [page_bit_map], 2 房资,取標(biāo)號指向的位串的第2位比特值蜕劝,并送往CF寄存器,將原比特置為1轰异;

為什么后面接上 jnc .b2 岖沛?

  • jnc 是條件轉(zhuǎn)移指令,表示如果CF寄存器的值不為1(為0)則轉(zhuǎn)移搭独;

語法復(fù)習(xí)參見 http://www.reibang.com/p/f71416ec68ac

從標(biāo)號.b1 到標(biāo)號 .b2

  • 目的:就是要在位串中找一個比特值為零的比特(找到的第一個)婴削,找到了,當(dāng)前的EAX就是這個比特在整個位串中的位置牙肝;找到了唉俗,就用EAX的值乘以0x1000作為可以分配的空閑的物理頁的物理地址,傳回配椭。

為什么最后的返回是 ret

  • 實(shí)際上虫溜,如果從整個內(nèi)核程序全局來看,就可以很清楚地看見股缸,過 allocate_a_4K_page本身位于公用例程段(sys_routine)吼渡,而它且只會被同處于公用例程段的過程alloc_inst_a_page調(diào)用,很明顯這是段內(nèi)(內(nèi)部)調(diào)用乓序,因此使用的是ret寺酪,而不是retf坎背;

  • 值得一提的是,過程alloc_inst_a_page卻會被位于內(nèi)核代碼段(core_code)的過程load_relocate_program調(diào)用寄雀,那時候就是段間(不同段)調(diào)用得滤,對于過程alloc_inst_a_page而言,最后的返回就是使用retf

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盒犹,一起剝皮案震驚了整個濱河市懂更,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌急膀,老刑警劉巖沮协,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異卓嫂,居然都是意外死亡慷暂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進(jìn)店門晨雳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來行瑞,“玉大人,你說我怎么就攤上這事餐禁⊙茫” “怎么了?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵帮非,是天一觀的道長氧吐。 經(jīng)常有香客問我,道長末盔,這世上最難降的妖魔是什么副砍? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮庄岖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘角骤。我一直安慰自己隅忿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布邦尊。 她就那樣靜靜地躺著背桐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蝉揍。 梳的紋絲不亂的頭發(fā)上链峭,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天,我揣著相機(jī)與錄音又沾,去河邊找鬼弊仪。 笑死熙卡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的励饵。 我是一名探鬼主播驳癌,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼役听!你這毒婦竟也來了颓鲜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤典予,失蹤者是張志新(化名)和其女友劉穎甜滨,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘤袖,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衣摩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了孽椰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昭娩。...
    茶點(diǎn)故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖黍匾,靈堂內(nèi)的尸體忽然破棺而出栏渺,到底是詐尸還是另有隱情,我是刑警寧澤锐涯,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布磕诊,位于F島的核電站,受9級特大地震影響纹腌,放射性物質(zhì)發(fā)生泄漏霎终。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一升薯、第九天 我趴在偏房一處隱蔽的房頂上張望栗涂。 院中可真熱鬧票罐,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽术荤。三九已至萝玷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蹦浦,已是汗流浹背扭吁。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人侥袜。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓蝌诡,卻偏偏與公主長得像,于是被迫代替她去往敵國和親系馆。 傳聞我的和親對象是個殘疾皇子送漠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評論 2 361

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