初學者一直不明白軟體程式是如何調動記憶體 CPU 工作的?

時間 2021-05-08 14:36:26

1樓:YunxiuMa

cp提供底層的操作介面,例如埠讀寫等操作,這樣就能實現對硬體的操作,這些介面才是物理上直接控制硬體工作的方式。但直接操作底層介面過於繁瑣,於是通過作業系統等層層封裝,便得到了更易於人們使用的軟體介面。最終呈現出來的的效果就是通過軟體就能控制硬體,但實際上直接控制硬體工作的是底層介面。

簡言之就是,蝌蚪文並不能直接控制cpu工作,而是高層的這段蝌蚪文命令經由作業系統等中間層的不斷向下傳遞,最終轉換成了最底層介面命令,這才是驅動硬體運作的動力

2樓:龍騰道默默地

墨家機關城也很複雜,但你不會覺得它神秘,因此背後的這個魔法般的躍遷,可以這樣表達:除了半導體在不分合的情況下(因為你的電腦除了風扇,沒有東西在動),有導電和不導電兩種狀態這個魔法外,剩下的都是語法糖(無數層)。如果不直接跳到這「松果腺」級的最後一步搞清楚這個地基,從高階語言到組合語言甚至到機器碼都是漫長而無獲的探索。

3樓:Xi Yang

所有的資料都是以二進位制形式在記憶體中被呼叫嗎?

是的。英語語言不過是乙個標記符號,這種符號怎麼能驅使電子的運動呢?

(傳統來講的)高階語言由編譯器翻譯成機器碼(比如0代表加,1代表乘,2代表讀記憶體,3代表寫記憶體,然後後面再跟倆數表示操作目標),然後CPU被設計為直接工作在機器碼上。

至於程式語言是怎麼翻譯為機器碼的,這是乙個相當trivial的工作(並不)。

至於CPU是怎麼工作的,舉個最簡單的加法器為例:

本位結果:0+0=0,0+1=1+0=1,1+1=0,這就是個異或門。

進製結果:0+0=0,0+1=1+0=0,1+1=1,這就是個與門。

這倆都是基本閘電路,能直接買著器件那種。你可以手焊它們,穿起來組成多位加法器。

然後減法就是加法(你簡單將大於一半的數當成負數就是了)。

然後乘除法我不會,儲存器我也不會(大致上是乙個時序電路,基於當前的控制輸入、儲存的內態給出結果,並決定是否清洗自己的內態)。

如果把中文標記這些電子的運動,是否可以用中文程式設計呢?

支援unicode符號名的編譯器直接就支援中文程式設計。那幾個英文關鍵字根本不是障礙。

4樓:

軟體並沒有什麼魔法,也不是有生命的東西,只是一串按特定格式寫成的指令。

而軟體執行的過程,只是硬體按照格式執行這些指令,指令寫什麼就做什麼。無論是執行計算,還是操作記憶體硬碟都是如此。這是硬體晶元的基本功能。

如果你想問誰向硬體下達指令要求執行乙個軟體的?答案是現在正在執行的另乙個軟體(一般是作業系統)。如果你問執行作業系統又是誰下達的指令?

那是系統載入器。你要是追查到底的話,就會追查到最終固化在晶元中的一段功能,這段功能只要電腦加電就會開始工作。他的功能就是進行最基本的初始化並把最基本的系統執行起來。

5樓:辣雞工具人

關於英文和中文的問題,你可以去翻閱一下圖靈機的相關知識。簡而言之,圖靈機接受的是「帶有乙個特殊的空白符號的有限符號集」,而且符號集的大小和圖靈機的「計算能力」是無關的;拉丁字母和漢字都滿足「有限」的概念。

別槓,現代漢語中,《通用規範漢字表》中第一部分即常用漢字中的的覆蓋率可達99.48%;你非要說繁體字,生僻字,異體字和自造字那就沒意思了,總不能把漢字拆解成筆劃吧?

圖靈機的模型裡,除了無限長的紙帶(也就是無限大的儲存空間)是不可實現的,其他部分都是可以實現的;這個實現,就是現代的電子計算機。

關於「所有的資料都是以二進位制形式在記憶體中被呼叫嗎」這個問題,答案是,是的。因為計算機記憶體暫時來看無法儲存除二進位制以外的資料。

「各種語言編寫程式,就能讓計算機工作,那它是如何調動記憶體,cpu工作的呢」?這個問題其實涉及了至少兩個方面的問題:

高階語言是怎麼轉換成計算機可以理解的二進位制資料的?

那些儲存在記憶體中的二進位制程式和資料是怎麼執行得到想要的結果的?

第二個問題,是《數位電路》可以解決的。學過這本書後,你就理解了數位電路是如何工作的。CPU的基本原理不比你紙上設計的簡單的加法器更複雜,只不過內部器件和連線複雜得多罷了。

第乙個問題,是《編譯原理》可以解決的。高階語言一步步被編譯成計算機可以直接執行的二進位制程式和資料,然後在合適的時候被送入CPU執行,再把結果儲存到合適的位置,等待以後呼叫。

把這兩個問題結合起來,就回答了最初的問題。比如說,我們設計了乙個簡單的八位加法器,它可以讀取兩個八位二進位制數,輸出八位二進位制;它還帶有乙個使能輸入,當使能輸入為1(高電平)時,加法器工作,否則則不工作;另乙個輸出端負責輸出進製,1代表有進製,0代表沒有。一共二十六個管腳,就算是手繪閘電路,設計起來也不難。

在這個基礎上,我們加一點難度,給這個加法器加入乙個新的輸入端;第乙個新輸入端為1時,電路做加法;輸入端為1時,電路做減法。做減法時,原進製輸出1,代表最高位有借位,反之則無。

這時候邏輯就複雜一點了,你需要乙個轉碼電路,把減數轉換成補碼再輸入。

然後再複雜一點,你面前出現了9*9的電容器陣列,要求你引入時鐘訊號,把九次計算結果分別存入同一排的九個電容器裡。你需要額外的電路來控制計數器和解碼器了。

最後,再加入另外的17*9電容器陣列,你要按照時鐘訊號分別從這些電容器裡讀取資料,進行運算,並將結果存入之前的9*9的電容器陣列裡。

但是,多讀書,有條件還可以買一些TTL電路或者FPGA的開發板來實踐。不要把知識看得太高大上,但也不要渴望速成,一步步來。

6樓:CA居民

我不知道你們開了組合語言這門課沒有或者微控制器也可以。做實驗,在某某控制晶元控制端輸入0001010,可以把輸入的值變成乙個值,換乙個控制訊號有變成另外乙個模式。

7樓:Eidosper

最簡單的邏輯:開關——這個你家有燈泡吧?按一下就開,再按就關上,好理解吧?

我們稍微複雜一點,做100個燈泡,做成10x10的矩陣,然後設計兩個開關並連好線,乙個開關負責開開,另乙個負責讓這個燈泡以字母「A」的形狀亮,這樣我們按一下第二個開關,燈泡就會顯示「A」,好理解吧?

現在我們每個燈泡都給兩個電壓,電壓高一點自然亮一點,然後得到第三個開關,這樣字母「A」就可以「亮-暗-滅」三個程度。如果我們繼續增加這個「電壓細分」——比如電壓分成8個等級,那麼就可以得到乙個10x10的黑白燈泡螢幕。

如果邏輯進一步複雜,我們可以用三種顏色燈泡來顯示這個A,就變成了彩色10x10矩陣。

如果我們繼續複雜——做成1920*1080*3色*8位位深,就得到了乙個螢幕。

簡單來說,你在電腦上按下鍵盤上的「A」,螢幕出現乙個「A」的過程就是這樣,只不過中間多了乙個「邏輯翻譯」的過程——你按下A,經過CPU轉換邏輯,最後寫入顯示卡對應位置傳遞到顯示器的控制器,然後控制器就會調整各個「開關」,最終螢幕多出乙個「A」來。

現在的計算機過於複雜,但是乙個微控制器或者輝光管的控制邏輯是簡單的,現代計算機只不過增加了更多的中間的邏輯轉換而已。

8樓:manxisuo

看這一本就夠了:https://

而且,問題的關鍵正如書名,即「編碼」二字。

一直不明白為什麼程式設計師要加班?

亮亮視界 加班的公司分類 1 為了加班而加班的公司 某些公司有加班文化,下班了也不准走,即使玩也得在公司待著。這種公司工作起來毫無動力。2 不加班就覺得員工任務不飽和的公司 這種公司使勁壓縮開發周期,員工不得不加班。3 專案產品研發周期短導致的加班 很多網際網路公司,專案產品需要在非常短的時間內開發...

請問乙個一直不明白的問題

Eeee 簡單一點來說,你求的極限值是0.999.無限逼近的,也就是誤差無限趨近為零。如果極限值是1.0000001,這個值和0.999 也至少有0.0000001的誤差,並不是趨近於0。這樣理解起來應該直觀一些。當然,這樣說只是幫助理解,求極限不能這麼求。樓上說的沒錯,極限是客觀存在的,不是估值。...

一直都不明白你怎麼這麼難忘

小九 我以為我這是把你忘了可是還沒有我在聽某些歌的時候會突然想起你突然想給你發個資訊聽到別人提起你的時候我的心會猛的一震看到和你長的像的男生會停留很久一直都不明白你怎麼這麼難忘 可能好多人都有過這種經歷,我以為是不甘心吧。或者說是捨不得,捨不得沒被他愛過。我總覺得我能陪你走很長一段路,比你以為的要長...