在
orange's
乙個作業系統的實現,第3章,
pmtest1.asm
中,有如下**
gdtptr dw gdtlen - 1 ; gdt界限
我們知道乙個描述符中包含段基址和段界限,那麼如果
gdtlen
是gdt
的長度,為什麼段界限要
-1呢?
因為段界限表達的是段內的最大偏移,而不是段的最大長度。
乙個簡單的例子,加入乙個段有如下記憶體:
var1 db 0x01;偏移
0var2 db 0x02;偏移
1 那麼段界限應該是1還是
2呢?答案是
1,最大偏移是1。
訪問段中資料使用:段基址
+偏移(所以段界限說明的是這個最大偏移)
總之,牢記一點,段界限不是指段的最大長度,而是只段內的最大偏移,所以一定要在段長度的基礎上再減1。
sinx x的極限為什麼是1 什麼是極限片?
極限片 maximum card 縮寫為mc。最初起源於歐洲,當時郵友們發現當明信片圖案 郵戳 郵票三個元素內容統 一 題材相接近時,會使明信片更有趣味性。於是郵友們開始為郵票找與其匹配的明信片圖案,並蓋主題相近的郵戳。這便是極限明信片的由來。至於為什麼要叫極限片這個名字,是因為按英文直譯過來就叫極...
C語言中為什麼要清除 bss段
bss段裡的內容 顯示初始化為0或者未顯示初始化的全域性變數 顯示初始化為0或者未顯示初始化的static區域性變數。為什麼要清除.bss段 c語言程式在編譯完成後,初始化為非零的全域性變數存放在.data段,而未初始化或初始化為0的全域性變數存放在.bss段中。在生成的可執行檔案中,只有.data...
1 面向介面 我們為什麼要面向介面?
聽過很多朋友說起過面向介面,一般都指面向介面的程式設計,這樣說很對,程式設計中應用介面可以分離實現,實現可插拔等,那麼只有在程式設計中可以用嗎?回到起初的問題,我們為什麼要面向介面?面向介面的成本高嗎?我現在用的是物件導向 面向過程 的方法,那麼面向介面又在 它和物件導向 過程 什麼關係?我的 中為...