linux将汇编转为机器码,汇编语言 高级语言 机器语言 本地代码
不管是什么語言,最終都會轉化為機器語言(本地代碼)(機器碼),計算機程序的運行最終仍是以機器語言(本地代碼)(機器碼)運行的。java
匯編語言:linux
匯編語言是低級編程語言,不像高級語言有跨平臺性,首先,CPU的的工做是靠機器語言(本地代碼)(就是指令集,ISA),而這些指令有些是cpu獨占的,而有些是必需要被外界訪問的,好比讓cpu作加法運算,誰加誰是cpu沒法決定的,就必須經過外界指定才能夠運算。因而問題出現了,用機器碼控制cpu太難了,只有0和1,編程人員要費很大勁!因而匯編語言應邀而生。它是文字形式的,程序員寫完程序后經過匯編器(相似于高級語言的編譯器)將文字轉化為機器碼,因而程序就能夠控制cpu了,所以匯編語言很依賴cpu,i386的匯編程序只能運行在支持i386體系的cpu上,蘋果PowerPC匯編程序只能運行在蘋果機上。這也就是為何Windows程序不能運行在蘋果機上,就是一位互相的匯編指令集不一樣,從而機器碼不一樣。程序員
機器語言、匯編語言不只跟cpu有關系,并且和系統也有關系。編程
C、C++、C#、java等語言都是高級編程語言。windows
C語言是跨平臺的,不過是“源碼級”跨平臺。原本就是存在針對linux、windows的不一樣的編譯器。C語言在window編譯成的機器語言,是沒法在linux系統運行的,由于機器語言和系統、cpu有關系,須要在linux系統用相應的編譯器從新編譯,才能在linux系統上運行,而java主要是依賴于jvm虛擬機,編譯后,不一樣的系統都有對應的jvm虛擬機,就能夠直接運行,因此有C語言“一次編寫,處處編譯”,Java是“一次編譯,處處運行”的說法。jvm
可是jvm虛擬機是一邊把java字節碼逐一轉換為本地代碼一邊運行的,存在著運行速度的問題,jvm虛擬機每次運行時都要把字節碼變換為機器語言,這一機制是形成運行速度慢的緣由,為此,目前業界也在努力改善這一問題,好比把首次變換后的本地代碼保存起來,第2次之后直接利用本地代碼,或是對字節碼中處理較為費時的部分進行優化()改善生成的本地代碼質量)等。這樣的操做方法看上去有些迂回,但由此能夠實現一樣的字節碼在不一樣的環境下直接運行。編程語言
如C++創始人酸溜溜的說法,JVM造了一個新的平臺,讓全部Java程序只能在這個平臺上運行,而C和C++的代碼能夠在幾十個不一樣的平臺上運行,從這個角度而言,C和C++是跨平臺的,而Java不是優化
總結
以上是生活随笔為你收集整理的linux将汇编转为机器码,汇编语言 高级语言 机器语言 本地代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸟宝宝有多内卷?为了让父母投喂自己 长出
- 下一篇: java ppt转html_word,p