首頁>Club>
15
回覆列表
  • 1 # 使用者2726921761995

    首先,解釋一下為什麼可執行檔案需要有檔案頭。對於一個可執行檔案來說,作業系統在執行它之前需要知道:1、它所依賴的作業系統版本,比如有些只能在DOS下執行,有些可以在Windows裡執行;有些必須在64位環境下執行等等。2、它的入口在哪,並不是所有可執行檔案的入口都在檔案的最前面,還可以在中間,或者最後面,所以需要有東西來描述。3、它的哪部分是程式碼,哪部分是資料,因為通常對於程式碼而言,程式碼部分應該是隻讀的,資料部分才是可讀寫的。4、哪些資料需要初始化為0,通常,在可執行檔案中,有一個叫BSS段的部分,這部分資料需要作業系統在載入可執行檔案時對BSS清零。5、它執行時的虛擬地址是什麼,如果無法載入到指定的地址上,作業系統該怎麼做(重定向表)。6、初始的暫存器的值是多少。……所以,要描述這些資訊,就必須給可執行檔案加上一個檔案頭。否則作業系統就不能正確載入並執行可執行檔案。那麼有沒有不需要檔案頭的可執行檔案呢?回答是有的。我能記得的有兩種:第一種是DOS時代的COM檔案,這種檔案的入口就是它的第一個位元組,暫存器的大部分初始化都由自己完成,尺寸不允許超過一個16位的段大小(64KB),功能非常有限。另一種就是嵌入式開發裡用的BIN檔案,它的入口就是它的第一個位元組,有些BIN檔案能自己初始化段暫存器,所以可以基本認為它是一個沒有檔案頭的可執行程式碼。但是由於BIN沒有統一的規範,所以具體到某個BIN檔案,就不好說它到底有沒有檔案頭了。然後,再解釋一下為什麼不同系統的檔案頭不一樣。一方面由於歷史原因,不同的作業系統都是各個玩各自的,所以造成了格式的差異。但更本質的原因是作業系統環境不同。比如,WindowsXP32位系統中,虛擬地址空間裡,使用者地址佔用的是0x00000000-0x7FFFFFFF的地址範圍,核心空間地址是0x80000000-0xFFFFFFFF的地址範圍,使用者空間是2GB,核心空間是2GB,通常預設是這樣的。但是在Linux裡,使用者空間是3GB,核心空間是1GB,這種記憶體分佈的差異就造成了很多東西都是不同的,包括可執行檔案的入口地址範圍、可用記憶體等等,因此Linux裡的ELF檔案和Windows裡的PE檔案就不可能定義的完全一樣。並且PE格式都包含一個DOS檔案頭,Linux裡是沒有這個東西的,PE裡還要指定使用Windows子系統的型別,Linux肯定不會支援。而且DLL庫和SO庫也不一樣。所以,因為以上的原因,不同作業系統裡的可執行檔案頭格式也不一樣。

  • 2 # pietr49411

    公文版頭的作用在於體現了公文的嚴肅性、規範性和統一性,是公文寫作中不能忽視的重要因素。規範要求:公文的格式,分版頭、主體、版記三部分,共由份號、密級和保密期限、緊急程度、發文機關標誌、發文字號、簽發人、標題、主送機關、正文、附件說明、發文機關署名、成文日期、印章、附註、附件、抄送機關、印發機關和印發日期、頁碼等18項要素組成。 版頭部分置於公文首頁紅色分隔線(寬度同版心,即156mm)以上的各要素統稱為版頭。包括份號、秘密等級和保密期限、緊急程度、發文機關標誌、發文字號、簽發人等要素。擴充套件資料:發文機關標誌是公文版頭部分的核心,用套紅大字居中印在公文首頁上半部,字型要莊重、規範、美觀、大小適度(一般應小於上級機關的字型大小)。主要有兩種形式:一是發文機關全稱或者規範化簡稱加“檔案”二字;二是發文機關全稱或者規範化簡稱。聯合行文時,可並用聯合發文機關名稱,一般主辦機關排列在前;也可單獨用主辦機關名稱。民族自治地方的公文,其發文機關標誌可並用少數民族的文字和漢字印刷,少數民族的文字排在漢字的上方。

  • 中秋節和大豐收的關聯?
  • 關於傣族潑水節的傳說(簡短)?