pc指針的值指向 C語言、匯編語言、機器指令、CPU之間是怎么聯(lián)系起來的?
C語言、匯編語言、機器指令、CPU之間是怎么聯(lián)系起來的?CPU的全稱是中央處理器,它是計算機操作的核心。根據(jù)所采用的不同技術(shù),CPU分為x86、x64、arm、DSP、單片機等不同的體系結(jié)構(gòu)。每種CP
C語言、匯編語言、機器指令、CPU之間是怎么聯(lián)系起來的?
CPU的全稱是中央處理器,它是計算機操作的核心。根據(jù)所采用的不同技術(shù),CPU分為x86、x64、arm、DSP、單片機等不同的體系結(jié)構(gòu)。每種CPU上都有一組特定的指令集,通常稱為機器指令。直接用機器指令編寫的程序是機器語言程序。
從理論上講,任何程序都可以直接用機器語言編寫(在早期,程序比較簡單),程序可以直接運行。然而,對于程序員來說,使用機器語言編程的要求很高,代碼不易移植,不便于人們直接閱讀。所以人們發(fā)明了一組符號,用符號來表示這些機器指令,這就是匯編語言。用匯編語言編寫的程序不能直接由計算機運行。它需要一個名為匯編程序的程序被轉(zhuǎn)換成機器語言才能在特定的機器上運行。
C語言比匯編語言更高級,用C語言編寫的程序不能直接在計算機上運行。它要求編譯器將C語言代碼轉(zhuǎn)換成機器語言。此過程分為幾個子步驟,如下圖所示。
為了使主要問題更加完善,這里添加了兩個概念,鏈接器和反匯編。
這些目標(biāo)文件也是機器指令,但它們?nèi)鄙僖恍┍匾男畔?,無法直接運行。鏈接器需要將這些文件與一些庫文件和可執(zhí)行文件頭信息鏈接在一起,形成一個可執(zhí)行文件(windows為PE格式,Linux為ELF格式)。
通常,在查看二進(jìn)制文件(對象文件或可行性文件)時,機器指令不會直接顯示,而是以匯編語言顯示。這是因為在這個過程中有一個反匯編程序,它將機器指令轉(zhuǎn)換成匯編語言,其功能與匯編過程正好相反。
現(xiàn)代匯編教材還是基于8086,對理解當(dāng)今CPU(如i9)有幫助嗎,還是教程太滯后?
裝配不工作?胡說
!裝配難學(xué)嗎?胡說
!任何高端應(yīng)用場景都需要組裝帶來的高效率和可靠性!什么是高端?軍工醫(yī)療領(lǐng)域!這些領(lǐng)域?qū)\行效率和可靠性的要求是無止境的。用C語言調(diào)用第三方函數(shù)庫可以方便地編寫PID,但它是如何實現(xiàn)的呢?效率有多高?如果有問題怎么辦?如何提高效率?你不知道!如果你能在匯編中編寫一個PID,你會發(fā)現(xiàn)一切都在你的控制之下!跑步速度達(dá)到極限!所有的數(shù)據(jù)更改都是根據(jù)您的設(shè)計來操作的,這就是所謂的自主控制
!很多人說中國沒有自己的工業(yè)軟件?為什么?大多數(shù)人不知道怎么寫,因為高級語言不提供現(xiàn)成的庫。。。國內(nèi)PLC的品牌很多,但很少有自己的編譯平臺。為什么?因為用C語言不能編寫PLC級編譯器。梯形圖語言本身是匯編語言的增量式版本,比C語言更接近底層,當(dāng)然C語言不能滿足要求。例如,許多人抱怨數(shù)控機床不如進(jìn)口機床精確。這個精度的瓶頸,除了國內(nèi)冶金行業(yè)技術(shù)的差距外,最大的原因就是編程語言的局限!由于效率和運行速度的差異,高級語言根本不能勝任這種應(yīng)用程序!更不用說三軸聯(lián)動、五軸聯(lián)動等技術(shù)了。
綜上所述,匯編語言的意義不僅僅是計算機的基礎(chǔ),幫助理解高級語言這么簡單!匯編語言是高端應(yīng)用領(lǐng)域的必備工具
!匯編語言難學(xué)嗎?當(dāng)然,學(xué)習(xí)并不難!任何芯片的內(nèi)部資源都是極其有限的,因此CPU所能提供的匯編指令也是極其有限的。只有這么多的指令,而且您不會像高級語言那樣有一堆第三方庫需要跟進(jìn)。而匯編語言的指令函數(shù)非常簡單易懂,通常是一個非常單一的函數(shù),比如如何處理源操作數(shù),然后寫到目標(biāo)操作數(shù)的地址,非常簡單直接!與高級語言(甚至C)相比,學(xué)習(xí)的難度在下降。
但必須指出的是,裝配很難使用!很難使用!要完成一個特定的任務(wù),就必須學(xué)會將任務(wù)分解成匯編指令可以完成的各種小目標(biāo),這就意味著用匯編來編寫程序?qū)λ惴ㄓ泻艽蟮囊蕾囆?,這也是程序員技術(shù)高超、腦力極度消耗的根本原因,也是非常有價值的
!總而言之,匯編語言就像基本的漢字,高級語言就像名言的全集。如果你想獲得諾貝爾文學(xué)獎,靠別人的名言是行不通的。即使你想講自己的原創(chuàng)故事,那也是不可能的,因為你根本看不懂![冷拖][冷拖][冷拖]