IA-32 Architecture: the function of segment regitster(CS DS SS ES)

對于IA-32架構,與8086不同,段寄存器不再是像以前一樣,直接作為段基址,因為32位的寄存器直接就可以表示4GB大小,不需要再偏移,因此段寄存器的含義也發生了相應的變化。

在IA-32架構里,段寄存器是間接給出段地址的
在這里插入圖片描述段寄存器作為選擇子Selector,它就相當于一個指針,指向的地方是段描述符 Segment Descriptor,這個段描述符存儲的是段基址,然后還有其他的寄存器和立即數提供偏移地址。

而這一點,適用的是32位系統的保護模式

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/384615.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/384615.shtml
英文地址,請注明出處:http://en.pswp.cn/news/384615.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

x86異常處理與中斷機制(1)概述中斷的來源和處理方式

參考《計算機組成》(北京大學 MOOC) 1 異常與中斷的來源(為什么需要中斷) 首先,說明一下異常和中斷這兩個概念。 它們兩個唯一的區別,就是,沒有什么區別。只是不同的地方不同的時間不同的人的…

【C language】typedef的使用:結構體、基本數據類型、數組

typedef基本數據類型 typedef int a; a abc;后面的a abc就等價于int abc typedef結構體 typedef struct a {int a;int b; } abc;abc aaa;對于上述,abc aaa;就等價于struct a aaa; 簡而言之,typedef的本質,就是構建等價關系。 第一個例…

【C language】動態數組的創建和使用

在C語言中,使用malloc函數創建動態數組,使用一個指針指向它,使用下標進行訪問。 unsigned long *a (unsigned long *)malloc(2 * sizeof(int)); a[0] 1000; a[1] 2000; printf("%d %d\n", a[0], a[1]); free(a);上述例子&…

x86異常處理與中斷機制(2)中斷向量表

補充:事件不僅包含中斷和異常,還包含系統調用,這個屬于用戶主動請求的事件。 上一節,只有一個溢出異常,那么,如果很多異常、中斷呢?(中斷向量表) 另外,之前0…

x86異常處理與中斷機制(3)中斷處理過程

上一節講完了根據中斷類型號找中斷服務程序的過程,現在著重說明一下更加完整的中斷處理過程吧。 本節以8086時代的中斷處理過程為例進行說明,主要分兩大部分 硬件處理軟件處理 需要注意,這不是絕對的,得看實際情況,…

Linux 0.11 內核解析:中斷相關(1)asm.s文件中斷處理分析

0 源代碼 有兩個版本的,一個是帶中文注釋,Intel格式的;一個是不帶注釋是AT&T格式的。 Linux 0.11 中文注釋版 Linux 0.11 源碼,基于《Linux內核完全注釋》趙炯 1 asm.s 文件 我們先假設該文件處理的中斷是無特權過渡的情況…

【精華文】C語言結構體特殊情況分析:結構體指針 / 基本數據類型指針,指向其他結構體

參考鏈接:Structure pointer pointing to different structure instance 注:可以查看此篇的問題和唯一的回復,那是相對正確的,不要看comment,有很多錯誤。 我是拒絕分析這種問題的,因為似乎沒有人會這么亂用…

enum in c language

今天說說C語言中的枚舉。 參考:Enumeration (or enum) in C 1 定義 定義一個枚舉類型很容易: enum aa { a1, a2, a3 };這里 enum是關鍵字aa是枚舉變量,也就是我們自定義類型a1,a2,a3是枚舉成員 然后怎么使用呢? 首先&#…

信號量SIGCHLD的使用,如何讓父進程得知子進程執行結束,如何讓父進程區分多個子進程的結束

本教程基于 Ubuntu 20.10 gcc 10.2.0. 示例程序如果不能正常編譯和執行,說明您系統和工具版本與我的不匹配,請自行查閱資料。 0 概述 先給出該信號的描述: SignalValueDescriptionSIGCHLD17Child status has changed (POSIX). Signal sent …

使用gdb調試多進程程序、同時調試父進程和子進程

參考: [1] GDB debugging multi-process programs [2] Debugging programs with multiple processes 根據這兩篇參考鏈接,完全可以實現使用gdb同時調試父進程和子進程。 接下來說明一下可能遇到的坑 gdb8.1版本有bug,設置完set detach-fork-on off&…

Linux安裝Ncurses庫

參考:How To Install Ncurses Library In Linux 針對Ubuntu說明一下: wget https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.2.tar.gz,至于最新版本,自己看官網,修改一下版本號即可。tar xzf ncurses-6.2.tar.gzcd nc…

gdb 10.2的安裝

參考 [1] GDB-10.2 [2] README for GDB release 個人系統 Ubuntu20.10。 注意gdb10.2需要c11語法,需要安裝g 下載安裝包wget https://ftp.gnu.org/gnu/gdb/gdb-10.2.tar.xz解壓縮tar -xvzf gdb-10.2.tar.xz進入解壓之后的目錄mkdir buildcd build配置,…

gdb tui的使用

[1] GDB Text User Interface [2] GDB Text User Interface 簡單來說,進入gdb之后,使用ctrl x 2就足夠了。其他細節請參考上述鏈接,選一個就可以。

C語言中信號函數(signal)的使用

先來簡單談談C語言中的信號(signal) 首先,signal是C語言庫中的函數,它實際上是軟中斷,也就是軟件發出的終端,本質來說,類似于int n。 對于接收到該軟中斷信號的進程,就會停下手頭的…

UNIX哲學

參考: 對比Linux與Windows 使用Linux想要做某些事情的時候,就拆開想,想想我需要哪些功能,需要哪些工具,依次怎么執行,然后用管道建立連接,讓數據依次流過不同的工具,從而得到最終結果…

fork創建多個子進程

references: [1] how to create two processes from a single Parent [2] fork() in C [3] linux中fork同時創建多個子進程的方法 fork的本質,就是復制,把當前進程復制一份,然后兩個進程并發地執行fork后面的語句,區別就是&#x…

wait系統調用

reference:Wait System Call in C 只強調幾點,剩下的直接看參考鏈接內容就好了,不是偷懶,而是里面內容寫的很好了,沒必要再寫一遍了,這種東西就是單純的系統調用而已,理解了功能,就完事了&#…

Linux進程間通信:共享內存與管道

references: [1] IPC through shared memory [2] Inter Process Communication (IPC) [3] https://www.geeksforgeeks.org/pipe-system-call/ [4] watch command in Linux with Examples 參考鏈接1和2是介紹了共享內存IPC的簡單原理和相關系統調用的使用參考鏈接3是介紹了管道通…

find command基本使用

find命令通常用于根據文件名查找文件,這是最基本用法。 find [path] -name/-iname [filename] path寫要查找的路徑,自動遞歸查找filename寫文件名,可以使用通配符*還有其他什么的表達式 具體細節請man find查閱文檔。

正則表達式特別需要注意的點:“空“字符的匹配

在正則表達式中,[...]代表1個字符,不管里面有多少字符,最終這個東西的結果都是1個字符。 對于表達式[^a]表達的匹配除了a之外的字符,并且是1個字符。 需要注意的是,有些特殊字符是不會被匹配的。 我們看一個示例&am…