一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

漫談?dòng)?jì)算機(jī)與程序是怎樣跑起來的

 昵稱散步收藏 2020-04-04

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

漫談?dòng)?jì)算機(jī)與程序是怎樣跑起來的

10 機(jī)器指令之操作碼編碼

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

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

漫談?dòng)?jì)算機(jī)與程序是怎樣跑起來的

11 數(shù)據(jù)編碼之?dāng)?shù)值編碼

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

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

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

1個(gè)字節(jié) 1-256

2個(gè)字節(jié) 1-65536

3個(gè)字節(jié) 1-16777216

就只是理論上表示的字符數(shù),因?yàn)橐紤]規(guī)律的問題,實(shí)際用于編碼的序列號(hào)要少很多,如GB2312的規(guī)則之一就是兼容ASCII,將ASCII碼以外的字符的首位編碼都是1。

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

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

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

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

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

13.1 位圖

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

如bmp,以及壓縮存儲(chǔ)的jpg、png等。

13.2 矢量圖:

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

14 聲音編碼

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

聲音編碼也就是音頻,如mp3編碼標(biāo)準(zhǔn)。

15 視頻編碼

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

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

16 從機(jī)器指令到匯編指令

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

漫談?dòng)?jì)算機(jī)與程序是怎樣跑起來的

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

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

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

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

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

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

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

當(dāng)計(jì)算機(jī)編程尚處于起步階段時(shí),程序流程是由“GOTO”語句來控制。該類語句允許程序員對當(dāng)前代碼行斷行,而直接進(jìn)入另一個(gè)不同的代碼段。

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

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

17.2 機(jī)器碼、匯編代碼、C代碼的比較

漫談?dòng)?jì)算機(jī)與程序是怎樣跑起來的

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

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

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

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

17.4 面向過程與面向?qū)ο蟮膶Ρ?/p>

漫談?dòng)?jì)算機(jī)與程序是怎樣跑起來的

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

漫談?dòng)?jì)算機(jī)與程序是怎樣跑起來的

18 程序的編碼、連接

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

程序運(yùn)行的操作系統(tǒng)平臺(tái);

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

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

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

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

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

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

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

編譯完成后形成一個(gè)exe文件,這個(gè)文件可能要求在運(yùn)行時(shí)需要?jiǎng)討B(tài)加載DLL庫;

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

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

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

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

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

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

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

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

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

20 程序運(yùn)行過程

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

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

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

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

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

-End-

內(nèi)容來自今日頭條

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲男人天堂成人在线视频| 国产成人午夜福利片片| 国产91麻豆精品成人区| 亚洲中文字幕亲近伦片| 日本人妻精品中文字幕不卡乱码| 99国产精品国产精品九九| 麻豆在线观看一区二区| 91亚洲精品亚洲国产| 欧美精品亚洲精品日韩精品| 国产传媒高清视频在线| 欧美黑人暴力猛交精品| 日韩国产欧美中文字幕| 国产精品香蕉一级免费| 丝袜人妻夜夜爽一区二区三区| 在线免费国产一区二区| 爱在午夜降临前在线观看| 又黄又色又爽又免费的视频| 黄片三级免费在线观看| 好吊日成人免费视频公开| 亚洲中文字幕在线综合视频| 欧美一区二区三区不卡高清视| 精品国产91亚洲一区二区三区| 国产午夜福利不卡片在线观看| 欧美亚洲美女资源国产| 美国女大兵激情豪放视频播放| 日本一本不卡免费视频| 丰满人妻一二区二区三区av| 亚洲免费观看一区二区三区| 日韩欧美一区二区久久婷婷| 亚洲另类女同一二三区| 久久精品少妇内射毛片| 日韩1区二区三区麻豆| 国产中文字幕一二三区| 夫妻性生活一级黄色录像| 翘臀少妇成人一区二区| 国产精品九九九一区二区| 久久综合狠狠综合久久综合| 亚洲一区二区三区四区| 国产一区麻豆水好多高潮| 黄男女激情一区二区三区| 黄片免费观看一区二区|