就编程而言,可移植性意味着什么?
?
?要想了解可移植性必須要知道:1.什么是程序?2.什么是系統平臺?
什么是程序
???首先,我們得知道程序的本質是什么?程序的本質就是一連串能被CPU識別并執行的有0、1代碼組成的指令即目標代碼(0、1組成的代碼)。不同類型的CPU指令集是不同的,相同的一段0、1代碼intelCPU能識別,ARM CPU就不能識別產生錯誤。
???其次,我們得知道程序的運行原理是什么?大家都知道程序是運行在操作系統之上的,而大家不知道的是:程序要想在操作系統上運行就需要在程序的頭部嵌入一段啟動代碼,此代碼相當于程序和操作系統之間的接口,它包含操作系統所需要的加載和重定位信息。如果沒有這段啟動代碼程序很難在windows,linux等操作系統上作為一個普通應用程序運行。到這里我們可以清楚的知道:程序=目標代碼+啟動代碼,兩者缺一不可,只有這樣程序才能在系統上運行起來。
????不同的操作系統,它們的啟動代碼接口是不同的,例如在Intel CPU上運行的xp和linux的啟動代碼接口是不同的,所以同一種程序它們的啟動代碼是不同的。但是因為都是INtel CPU,所以程序的目標代碼(0、1代碼)是相同的。
??什么是程序呢,程序=目標代碼+啟動代碼
什么是系統平臺
????這里的系統平臺是指cpu+操作系統的組合:如intel CPU+windows xp、intel CPU+Mac Os X、intelCPU+linux這是三個不同的系統平臺,ARM cpu+linux與intel Cpu+linux也是不同的系統平臺。
????為什么系統平臺是CPU+操作系統的組合呢,我們從上面了解到程序=目標代碼+啟動代碼。目標代碼隨著CPU類型的不同而不同,啟動代碼隨著操作系統的不同而不同,因此系統平臺是CPU+操作系統。
可移植性的本質
????那么目標代碼和啟動代碼是怎么生成的呢?答案是編譯器。編程語言編寫的程序首先要被編譯器編譯成目標代碼(0、1代碼),然后在目標代碼的前面插入啟動代碼,最終生成了一個完整的程序。所以編程語言的可移植性依賴于它們的編譯器是否強大,是否在多個平臺上都有這種編程語言的編譯器。例如C編譯器在大約40種系統上可用,包括從8位微處理器的計算機到Cray超級計算機。
???要注意的是,程序中為訪問特定設備(如顯示器)或者操作系統(如windows xp ?的API)的特殊功能而專門編寫的部分通常是不能移植的。
????綜上所述,一個編程語言的可移植性強不強取決于1.不同平臺編譯器的數量 ?2.對特殊硬件或操作系統的依賴性
?
總結
以上是生活随笔為你收集整理的就编程而言,可移植性意味着什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UNIX再学习 -- 函数 fork 和
- 下一篇: LR菜鸟入门 -- LightRoom安