日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

計算機與程序是怎樣跑起來的?這確實是一個十分有趣的話題。想想計算機功能是如此強大,程序能夠完成很多復(fù)雜的任務(wù),是不是覺得很神奇?再想想我們這個紛繁的世界和宇宙,有其復(fù)雜性也有其簡單性,竟然都是由原子和虛空組成的,因為排列組合而變得復(fù)雜。計算機硬件、編程語言、程序也是如此。計算機硬件的基本邏輯元件只是一個邏輯開關(guān),用來表示兩個狀態(tài)(稱為二進制),經(jīng)過組合來表示不同的數(shù)字,用數(shù)字便可以表示萬物。程序也是如此,一般只是由幾十個關(guān)鍵字、運算符、三個基本控制結(jié)構(gòu)按某種編程語言規(guī)范組合起來,由一個翻譯程序(按編程語言規(guī)范)將程序翻譯成二進制序列給計算機執(zhí)行即可。

0 布爾代數(shù)只需要使用一些簡單的運算規(guī)則和兩個符號,如二進制的0或1。布爾代數(shù)是英國人布爾(Boole)于1847年提出來的,是數(shù)學(xué)和邏輯學(xué)的結(jié)合。

1 布爾代數(shù)可以在開關(guān)電路中實現(xiàn),這是美國人香農(nóng)(Shannon)在1938年提出來的,結(jié)合了數(shù)學(xué)、邏輯學(xué)、電學(xué)。

2 開關(guān)電路中的邏輯開關(guān)可以是繼電器、或電子管、或晶體管。(是創(chuàng)建計算機最核心的邏輯元件,關(guān)系到速度、能耗、穩(wěn)定性、以及由價格影響到的普及問題)

3 開關(guān)電路可以實現(xiàn)邏輯門電路,如與、或、異或電路。

4 邏輯門可以組合成半加器、加法器,由加法器可以實現(xiàn)其它算術(shù)和邏輯運算。

5 邏輯門組合也可以實現(xiàn)記憶電路,從而實現(xiàn)存儲功能。

6 以上就是計算機實現(xiàn)基本的理論與硬件基礎(chǔ)。

7 最早的計算機是專用的,然后具有了通用性,通過插拔電線和外部開關(guān)實現(xiàn)計算任務(wù)的改變。

8 1945年,美國人馮諾依曼(von Neumann)為了實現(xiàn)計算機全過程的自動化,減少人為在計算前和計算中的人工干預(yù),提出 了“存儲程序、程序控制”的概念。

漫談計算機與程序是怎樣跑起來的

 

馮諾依曼認為數(shù)據(jù)和指令同等存儲在存儲器(內(nèi)存、寄存器)中,根據(jù)編碼規(guī)則解釋讀取,由控制器解釋指令并產(chǎn)生控制信號,從而實現(xiàn)了計算機的通用性。

如何來實現(xiàn)相同任務(wù)的自動化呢?剛開始的“直接編程”是不具有自動化的,即在計算一道題之前,先由操作人員手工把多個部件用電線按一定方式連接起來,再設(shè)置一些開關(guān)。第二種稱為“存儲程序”,即先把題目所需要的計算指令序列輸入到電腦中存起來,由這些指令來自動地聯(lián)接部件和設(shè)置開關(guān)。現(xiàn)今我們使用的計算機都是采用“存儲程序控制”的思路。

編碼可以分為機器指令編碼(組合機器指令編碼來解決任務(wù)稱為機器語言編程)、內(nèi)存地址和寄存器編碼、字符編碼、圖形編碼、聲音編碼、視頻編碼等。

9 內(nèi)存地址和寄存器編碼

數(shù)據(jù)和指令存儲到存儲器,需要通過地址來訪問。

最開始16位CPU內(nèi)部有20根地址線,其編碼區(qū)間為:00000H~0FFFFFH,所以,它可直接訪問的物理空間為1M(220)字節(jié)。而16位CPU內(nèi)部存放存儲單元偏移量的寄存器(如:IP、SP、BP、SI、DI和BX等)都是16位,它們的編碼范圍僅為:00000H~0FFFFH。這樣,如果用16位寄存器來訪問內(nèi)存的話,則只能訪問內(nèi)存的最低端的64K,其它的內(nèi)存將無法訪問。為了能用16位寄存器來有效地訪問1M的存儲空間,16位CPU采用了內(nèi)存分段的管理模式,并引用段寄存器的概念。

存儲單元中所存放的二進制信息通常稱為該存儲單元的內(nèi)容或值,根據(jù)數(shù)據(jù)類型的不同,通過一個或多個內(nèi)存單元(字節(jié))拼接而成,由其首地址表示。如一個雙字的內(nèi)容是該字地址所指向的單元及其后繼三個單元的內(nèi)容拼接而成。

數(shù)據(jù)可以是存儲中的立即數(shù),也可以是內(nèi)存單元、還可以是寄存器,可以有多種方法來表示內(nèi)存單元地址,稱為尋址方式。

漫談計算機與程序是怎樣跑起來的

 

10 機器指令之操作碼編碼

一個完整的機器指令通常包含有操作碼和操作數(shù)(數(shù)據(jù),同樣需要編碼)。

自然,計算機的操作可以通過邏輯開關(guān)來控制,n個指令可以通過log2n個二進制數(shù)(位,邏輯開關(guān))來表示,如一個字節(jié)(8個位)便可以表示255個機器指令,如:

漫談計算機與程序是怎樣跑起來的

 

11 數(shù)據(jù)編碼之數(shù)值編碼

有表示整數(shù)的補碼、表示浮點數(shù)的IEEE754編碼方案等。

12 數(shù)據(jù)編碼之字符編碼

字符需要另外一套編碼規(guī)則,如ASCII、GB2312、Unicode等,用一個數(shù)字來表示一個字符(字符的顯示需要另外一套編碼規(guī)則來解釋,這就是圖形編碼,后面簡單解釋),字符越多,需要的數(shù)字越多(還要考慮規(guī)律的問題),也就是需要的二進制位(存儲空間)更多,所以如何經(jīng)濟地存儲是需要考慮的問題,對于ASCII全碼,因為只使用了一個字符,存儲沒什么問題,但如果一套符號體系需考慮更多的字節(jié)呢?

1個字節(jié) 1-256

2個字節(jié) 1-65536

3個字節(jié) 1-16777216

就只是理論上表示的字符數(shù),因為要考慮規(guī)律的問題,實際用于編碼的序列號要少很多,如GB2312的規(guī)則之一就是兼容ASCII,將ASCII碼以外的字符的首位編碼都是1。

如果編碼的字符達幾十萬,如unicode,需要考慮的字節(jié)數(shù)可以就是4個或以上,毫無疑問,前面的字符一個字節(jié)就夠,只有后面的字符才需要更多的字節(jié),為此,又搞出了一套存儲方案uft-8、uft-16、utf-32,實現(xiàn)等長或不等長的存儲,但應(yīng)有自己的規(guī)則和與unicode對應(yīng)的規(guī)則。

對于字符編碼,除了表示、存儲、顯示的問題,還有輸入的問題,如果你要輸入字母a,是否需要考慮其ASCII編碼呢,a的ASCII編碼是97,為什么不從十進制的101開始編小寫字母呢,其實97的二進制數(shù)1100001比十進制的100更有規(guī)律。A的編碼65也是如此(2^6=64)。ASCII可輸入字符可以直接從鍵盤輸入,其內(nèi)部再做轉(zhuǎn)換。

多字節(jié)編碼的漢字就不行了,你又不能去記其編碼后,為此又搞出來了一些輸入的編碼方案,如五筆,拼音輸入等。

13 數(shù)據(jù)編碼之圖形圖像編碼

圖形圖像包括點陣表示的位圖和函數(shù)表示的矢量圖。

13.1 位圖

黑白圖像就好比在其表面劃分出精細的小方格,每一方格稱為一個像素。若把全白的像素設(shè)定為11111111,全黑的像素設(shè)定為00000000,具有不同明暗的灰色介于兩者之間,則8比特就具有256種灰度的一個像素數(shù)字化的基礎(chǔ)。你完全可以使用更多的比特來保存一個像素的信息,這些信息既可以代表黑白層次,也能夠代表不同的彩色。事實上,多媒體電腦屏幕上每一像素的顏色已經(jīng)超過數(shù)百萬種之多,十分逼真地接近自然色澤。把所有的像素組合起來,圖像或照片也就“數(shù)字化生存”于電腦屏幕、數(shù)字電視屏幕或彩色打印機紙上。

如bmp,以及壓縮存儲的jpg、png等。

13.2 矢量圖:

如CAD的swf,由直接和曲線組成,可以直接用公式進行描述和繪制。

14 聲音編碼

聲音其實是一種空氣中的振動,聲音通過話筒(利用電磁感應(yīng)原理)轉(zhuǎn)變?yōu)闀r間上連續(xù)的電流(電壓波),電流(電壓波)與引起電流(電壓波)的聲波的變化規(guī)律是一致的,因此可以利用電流(電壓波)來模擬聲音信號,這種電流(電壓波)被稱為模擬音頻信號。對模擬信號采樣、量化,便可以將模擬音頻信號轉(zhuǎn)化為一組用來表示聲音的二進制數(shù)字序列-數(shù)字音頻。至此,我們就成功地將聲音數(shù)字化了。當我們聽音樂時則是一個相反的過程。只要你聽過CD激光唱片播放的立體音樂,對此就會有切身的感受。CD激光盤上布滿了極其微波的凹坑,每一個凸凹分別表示“0”,“1”的信息,音樂或聲音就以這一系列的凸凹方式,“數(shù)字化生存于光盤表面。

聲音編碼也就是音頻,如mp3編碼標準。

15 視頻編碼

一幅一幅靜態(tài)的圖像連續(xù)播放,又可構(gòu)成動態(tài)的卡通片。配上悅耳動聽的音樂,附上文字字幕,再經(jīng)過壓縮和解壓,電影、電視和多媒體電子圖書既能在光盤或磁盤上“數(shù)字化生存”,也可以通過互聯(lián)網(wǎng)絡(luò)傳輸?shù)矫恳唤锹洌?ldquo;數(shù)字化生存”于整個地球。

視頻編碼也就是音頻與圖形圖像的結(jié)合,如mp4標準。

16 從機器指令到匯編指令

一個機器指令通常包含有操作數(shù),一個完整的機器指令編碼需要考慮操作碼、尋址方式、操作數(shù),具體的編碼規(guī)則可以通過查表獲得。

漫談計算機與程序是怎樣跑起來的

 

查表不正是計算機所擅長的嗎?如果用更容易理解和記憶的英文單詞或英文縮寫去表示機器指令,這樣的單詞或英文縮寫就稱為匯編指令,并通過一個翻譯程序去將對應(yīng)的匯編指令翻譯成機器指令,這樣的編程語言稱為匯編語言,相對于用機器語言(對應(yīng)一個機器指令集),匯編語言更方便編寫、閱讀和維護。

簡單一點理解,匯編語言就是通過建立 機器指令與匯編指令的對照表,然后由匯編器去做查找、替換。

17 從匯編指令到高級語言指令

用匯編指令編程還是比較繁瑣,計算機的翻譯程序似乎可以代替程序員做更多的工作。這樣的翻譯程序就是現(xiàn)在的編譯器或解釋器,是一種更高程度上的抽象,稱為高級語言。一條高級語言語句一般可以對應(yīng)一條或多條 的匯編語句(機器指令語句)。高級語言的設(shè)計者設(shè)計語法規(guī)則,程序員按規(guī)則編寫解決問題的代碼,編譯器(設(shè)計時要考慮高級語言的語法規(guī)則、操作系統(tǒng)(在機器指令集上構(gòu)建的基礎(chǔ)應(yīng)用))按規(guī)則翻譯,當然規(guī)則的設(shè)計有其合理性。

17.1 面向過程的控制結(jié)構(gòu)

在匯編語言中,有通過有無條件或有條件跳轉(zhuǎn)(cmp指令影響標志寄存器實現(xiàn))實現(xiàn)循環(huán),或通過用ecx寄存器作為循環(huán)計數(shù)器來實現(xiàn)loop循環(huán),也可以使用偽指令實現(xiàn)循環(huán)結(jié)構(gòu)。

跳轉(zhuǎn)可以實現(xiàn)條件分支和循環(huán)的效果。

當計算機編程尚處于起步階段時,程序流程是由“GOTO”語句來控制。該類語句允許程序員對當前代碼行斷行,而直接進入另一個不同的代碼段。

編程語言后來引入了函數(shù)的概念,即允許程序?qū)Υa進行斷行。如果已經(jīng)完成,不再使用goto語句來表示代碼的斷行。函數(shù)調(diào)用后,函數(shù)將回到下一條指令。其中一個主要的原因是,一個遍布goto語句的程序會讓讓人很難抓住重心,不便于對程序的理解和維護。

GOTO語句一直是批評和爭論的目標,主要的負面影響是使用GOTO語句使程序的可讀性變差,甚至成為不可維護的“面條代碼”。隨著結(jié)構(gòu)化編程在二十世紀六十年代到七十年代變得越來越流行,許多計算機科學(xué)家得出結(jié)論,即程序應(yīng)當總是使用被稱為“結(jié)構(gòu)化”控制流程的命令,如if, else, switch, while, for等關(guān)鍵字和代碼塊實現(xiàn)的條件分支與循環(huán)。

17.2 機器碼、匯編代碼、C代碼的比較

漫談計算機與程序是怎樣跑起來的

 

17.3 面向?qū)ο蟮姆庋b、繼承、多態(tài)

引入了控制結(jié)構(gòu)的面向過程思路雖然有其優(yōu)越性,但模塊性還是不強,因為大型程序的構(gòu)建,如果能使用搭積木的方式是最好的,為此,在有了面向?qū)ο蟮木幊趟季S,對象就像一塊塊的預(yù)制件,先創(chuàng)建預(yù)制架構(gòu)模板(類),按預(yù)制架構(gòu)模板創(chuàng)建預(yù)制件(對象)。

面向?qū)ο蟮姆庋b技術(shù),分離了內(nèi)部實現(xiàn)和外部接口,當程序擴充時,可以將代碼的變更產(chǎn)生的影響縮小到最小的范圍。

對于大型程序而言,相對于面向過程思想構(gòu)建的代碼,面向?qū)ο笤诖a的編寫、維護方面更有優(yōu)勢。

17.4 面向過程與面向?qū)ο蟮膶Ρ?/p>漫談計算機與程序是怎樣跑起來的

 

17.5 面向過程與面向?qū)ο蟮拇a比較

漫談計算機與程序是怎樣跑起來的

 

18 程序的編碼、連接

程序運行的硬件平臺:CPU指令系統(tǒng);

程序運行的操作系統(tǒng)平臺;

需要處理的數(shù)據(jù)有哪些?找到數(shù)據(jù)的規(guī)律或讓其更有規(guī)律;(數(shù)據(jù)結(jié)構(gòu))

怎樣將數(shù)據(jù)輸入到內(nèi)存?

數(shù)據(jù)如何處理?(算法實現(xiàn))

數(shù)據(jù)如何從內(nèi)存輸出到顯示屏或打印機、文件、數(shù)據(jù)庫、網(wǎng)絡(luò)?

選擇計算機高語言、開發(fā)框架和對應(yīng)的開發(fā)工具,將上述的步驟用計算機高級語言描述出來(利用開發(fā)工具的編輯框編輯代碼)?

利用開發(fā)工具的編譯器編譯代碼,此過程還包括利用開發(fā)工具的預(yù)處理器進行編譯前的預(yù)處理(如宏展開、庫文件包含(靜態(tài)鏈接)、條件編譯),以及使用調(diào)試器進行代碼調(diào)試;

用計算機語言對應(yīng)的的編譯器編譯成計算機能理解的由“0”和“1”組成的二進制代碼(也可是程序運行時直接用計算機語言對應(yīng)的解釋器直接解釋成二進制代碼)。

編譯完成后形成一個exe文件,這個文件可能要求在運行時需要動態(tài)加載DLL庫;

 

19 程序安裝(如有需要,小程序及綠色程序可直接運行)

19.1 在硬盤的某一位置創(chuàng)建一個專門的文件夾;

19.2 將需要的文件從硬盤的另一位置(下載后存放位置)或光盤復(fù)制到上述文件夾;

19.3 拷貝和注冊相關(guān)DLL文件到自己的安裝目錄或相關(guān)系統(tǒng)目錄下;

19.4 軟件的設(shè)置參數(shù)與DLL文件的注冊信息寫進注冊表;

19.5 上述的大型軟件由于涉及的文件、配置較多,一般會采用專業(yè)安裝程序制作工具,這樣的安裝文件會有詳細的選項,綠色軟件則不需注冊,可直接運行;

19.6 以上創(chuàng)建文件夾,復(fù)制文件,寫入注冊表等操作為避免用戶的不便操作,程序開發(fā)人員會采用專業(yè)安裝程序制作工具制作安裝文件,由此也可以通過更改增加安裝包的適當參數(shù)讓程序安裝自動完成,也可以利用第三方軟件錄制一次軟件安裝過程然而讓軟件以后安裝時可以自動運行。

廣義的綠色就是指不需要專門的安裝程序,對系統(tǒng)的改變比較少,手工也可以方便的完成這些改變,比如拷貝幾個動態(tài)庫,或者導(dǎo)入注冊表,這里的關(guān)鍵是手工可以方便的完成這些改變,或者可以借助于批處理等等腳本完成。

狹義的綠色可以叫做純綠色軟件,就是指這個軟件對現(xiàn)有的操作系統(tǒng)部分沒有任何改變,除了軟件現(xiàn)在安裝的目錄,應(yīng)該不往任何地方寫東西,刪除的時候,直接刪除所在的目錄就可以了,就類似于以前的大多數(shù)DOS程序。

20 程序運行過程

20.1 雙擊exe文件,操作系統(tǒng)創(chuàng)建一個新的進程和一個初始線程;

20.2 應(yīng)用程序代碼裝載到內(nèi)存;

20.3 動態(tài)鏈接庫裝載到內(nèi)存(加載時動態(tài)鏈接庫(指定路徑),如有需要及exe中有此功能代碼);

20.4 為數(shù)據(jù)和堆棧分配物理內(nèi)存,并映射到虛擬內(nèi)存;

20.5 應(yīng)用程序開始執(zhí)行(運行時動態(tài)鏈接庫(按順序搜索指定的幾個路徑),如有需要及exe中有此功能代碼)。

 

分享到:
標簽:計算機
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定