成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux內(nèi)核完全剖析---math_emulate.c程序

系統(tǒng) Linux
math_emulate.c程序中的所有函數(shù)可分為3部分:第一類是設(shè)備不存在異常處理程序接口函數(shù)math_emulate(),只有這一個函數(shù);第二類是浮點指令仿真處理主函數(shù)do_emu()......

math_emulate.c程序中的所有函數(shù)可分為3部分:第一類是設(shè)備不存在異常處理程序接口函數(shù)math_emulate(),只有這一個函數(shù);第二類是浮點指令仿真處理主函數(shù)do_emu(),也只有一個函數(shù);另外所有函數(shù)都是仿真運算輔助類函數(shù),包括其余幾個C語言程序中的函數(shù)。

在一臺不包含80387協(xié)處理器芯片的PC中,如果內(nèi)核初始化時在CR0中設(shè)置了仿真標志EM = 1,那么當CPU遇到一條浮點指令時就會引起CPU產(chǎn)生異常中斷int 7,并且在該中斷處理過程中調(diào)用本程序中第476行處的math_emulate(long ___false)函數(shù)。

在math_emulate()函數(shù)中,若判斷出當前進程還沒有使用過仿真的協(xié)處理運算時就會對仿真的80387控制字、狀態(tài)字和特征字(Tag Word)進行初始化操作,設(shè)置控制字中所有6種協(xié)處理器異常屏蔽位并復(fù)位狀態(tài)字和特征字。然后調(diào)用仿真處理主函數(shù)do_emu()。使用的參數(shù)是作為如下info結(jié)構(gòu)的中斷處理過程中調(diào)用math_emulate()函數(shù)的返回地址指針。info結(jié)構(gòu)實際上就是棧中自從CPU產(chǎn)生中斷int7后逐漸入棧的一些數(shù)據(jù)構(gòu)成的一個結(jié)構(gòu),因此它與系統(tǒng)調(diào)用時內(nèi)核棧中數(shù)據(jù)的分布情況基本相同。參見include/linux/math_emu.h文件第 11 行和kernel/sys_call.s開始部分。

  

Linux內(nèi)核完全剖析---math_emulate.c程序

do_emu()函數(shù)(第52行)首先根據(jù)狀態(tài)字來判斷有沒有發(fā)生仿真的協(xié)處理器內(nèi)部異常。若有則設(shè)置狀態(tài)字的忙位B(位15),否則就復(fù)位忙位B。然后從上述info結(jié)構(gòu)中EIP字段處取得產(chǎn)生協(xié)處理器異常的二字節(jié)浮點指令代碼code,并在屏蔽掉每條浮點指令碼中都相同的ESC碼(二進制11011)位部分后,根據(jù)此時的code值對具體的浮點指令進行軟件仿真運算處理。為便于處理,該函數(shù)按5種類型浮點指令碼分別使用了五個switch語句進行處理。例如,第一個switch語句(第75行)用于處理那些不涉及尋址內(nèi)存操作數(shù)的浮點指令。而最后兩個switch語句(第419、432行)則專門用來處理操作數(shù)與內(nèi)存相關(guān)的指令。對于后一種類型的指令,其處理過程的基本流程是首先根據(jù)指令代碼中的尋址模式字節(jié)取得內(nèi)存操作數(shù)的有效地址,然后從該有效地址處讀取相應(yīng)的數(shù)據(jù)(整型數(shù)、實數(shù)或BCD碼數(shù)值)。接著把讀取的值轉(zhuǎn)換成80387內(nèi)部處理使用的臨時實數(shù)格式。在計算完畢后,再把臨時實數(shù)格式的數(shù)值轉(zhuǎn)換為原數(shù)據(jù)類型,最后保存到用戶數(shù)據(jù)區(qū)中。

另外,在具體仿真一條浮點指令時,若發(fā)現(xiàn)浮點指令無效,則程序會立刻調(diào)用放棄執(zhí)行函數(shù)__math_abort()。該函數(shù)會向當前執(zhí)行進程發(fā)送指定的信號,同時修改棧指針esp指向中斷過程中調(diào)用math_emulate()函數(shù)的返回地址(___math_ret),并立刻返回到中斷處理過程中去。

【編輯推薦】

  1. Linux下隱藏網(wǎng)絡(luò)連接的另一種方法
  2. Linux中學(xué)會靈活使用shell下的特殊字符
  3. Linux下查看用戶登陸后的操作記錄
責(zé)任編輯:趙寧寧 來源: IT專家網(wǎng)
相關(guān)推薦

2009-06-17 17:00:03

2009-06-17 13:03:42

Linux內(nèi)核

2010-01-07 13:44:54

Linux內(nèi)核代碼

2010-01-07 10:22:49

Linux內(nèi)核

2020-11-20 07:55:55

Linux內(nèi)核映射

2011-06-15 11:03:54

Linux內(nèi)核Xen

2025-04-02 00:33:00

2025-04-01 02:00:22

2011-09-09 10:31:40

Xen虛擬化linux內(nèi)核

2025-04-18 04:05:00

2022-08-03 11:00:20

Linux內(nèi)核

2020-04-01 10:28:12

Apache HBas數(shù)據(jù)結(jié)構(gòu)算法

2010-01-26 17:16:33

C++應(yīng)用程序

2009-09-03 17:36:13

C#創(chuàng)建Web應(yīng)用程序

2010-01-11 17:43:23

C++程序設(shè)計

2009-03-10 17:15:07

Linux兼容內(nèi)核Win程序

2013-10-31 16:29:10

Linux內(nèi)核

2023-01-03 15:47:09

Linux內(nèi)核C語言

2010-01-14 17:42:47

CC++

2021-02-20 06:08:07

LinuxWindows內(nèi)核
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 91色视频在线观看 | 91免费版在线观看 | 伊人春色成人 | 一本综合久久 | 亚洲理论在线观看电影 | 高清一区二区 | 久久区二区 | 一区二区播放 | 日韩精品在线播放 | 日韩看片| 日韩精品999 | 国产在线视频一区二区董小宛性色 | 91精品国产乱码久久久久久久久 | 欧美日韩精选 | a级在线免费观看 | 欧美三级免费观看 | 久久综合激情 | 四虎影院在线免费观看 | 久色视频在线 | 国产精品一区二区在线播放 | 久久精品亚洲精品国产欧美 | 在线中文视频 | 激情欧美日韩一区二区 | 欧美在线视频一区二区 | 一区二区三区四区av | 欧美成人一级视频 | av在线电影网 | 成人黄色电影在线观看 | 性色网站 | 国产一级视频在线观看 | 丝袜 亚洲 欧美 日韩 综合 | 欧美八区| 黄色片在线免费看 | 久久精品国产亚洲一区二区三区 | 青青久久| 国产精品成人69xxx免费视频 | 成人精品一区亚洲午夜久久久 | 超碰在线人 | 久草在线视频中文 | 精品久久久久一区二区国产 | 亚洲va欧美va天堂v国产综合 |