1. 程式人生 > >菜鳥的組合語言學習筆記

菜鳥的組合語言學習筆記

 1.1機器語言

計算機發展初期,人們都是用機器語言進行程式設計的,這也是人們能實現程式設計控制計算機的最低級別。那麼機器語言是什麼樣子的呢?就是用0和1組成的一個串(形如011010101),cpu的每一個功能對應著一個串,cpu得到這樣的串就去執行對應的功能,我們把這樣的串叫做一條機器指令。cpu提供的所有功能,這些功能對應的所有串,我們稱之為這種cpu的指令集。這裡我們就知道指令集是什麼東東了。cpu提供的功能的個數是一定的,但是0和1組成的串卻有非常多的組合。所以並不是任意一個串都可以讓cpu去執行特定的功能,只有指令集中的串才可以。

每一種cpu,由於硬體設計和內部結構的不同,對應的指令集也是不同的。也就是說,每種cpu都有專屬於自己的一套指令集。這就好比兩個人,一個說英語,一個說法語,雖然他們的語言都是由相同的26個字母組成的(就像不同cpu的指令集都是由0和1組成的),但是同樣的一個單詞,他們兩人可能理解成不同的意思。同樣的,他們要表達同一個意思,也可能用不一樣的單詞。由此可見,用機器語言編寫的程式是不可移植的。什麼叫移植?就是你用cpu-A的指令集編寫一個程式,可以在cpu-A上成功執行,於是你想不改動該程式,然後在cpu-B上同樣執行成功,實現相同的功能。想想也是不可能,就好比你用英語寫了一篇文章,拿去讓只會法語的人讀,你說他會讀懂嗎?

早期用機器語言編寫程式的程式猿,不能不稱之為神。你要記住cpu提供的所有的功能,以及每個功能對應的一串二進位制指令,然後熟練的使用。萬一哪個地方0被錯誤寫成了1,你還要在萬千個0和1中把它找出來。想想都有點不可思議。關鍵是萬一換了其他的cpu,你還要重複上面的過程重新編寫你的程式。

注:其實還有更低級別的指令,叫做微指令,每條機器指令都被翻譯成幾條微指令然後讓cpu去執行。至於微指令,不用去了解,太底層了,而且是cpu生產商的機密(就好比用Iphone6,我們能使用Iphone6的各種功能,但是我們不知道這些功能是如何實現的,這就是商業機密,指令集就是一個功能集合,我們用指令集去實現自己想要的功能,但是這些功能如何實現的,就是微指令的事,人家不會告訴你的)。我們只要知道cpu中固化了一套自己的指令集就可以了。至於什麼是固化,我也不懂,貌似是涉及硬體的東西,但是你只要明白,不是我指令集裡的東西我不認。

講個很久以前的笑話,說有個人很牛逼,有天發現自己的驅動軟體壞掉了,於是他找來一張空光碟,拿起一根細針,瘋狂得戳呀,一個小時過去了,塞入光碟,驅動安裝成功。這雖然是誇張,但是由一點是非常正確的,不管你用什麼語言編寫的程式,最終都會被翻譯成機器語言在機器上執行,沒辦法,誰讓機器只認0和1呢。

相關推薦

Java教程———學習筆記

class this 關鍵字 多繼承 之間 字母 ext javac 多個 編譯錯誤 (1)Java中的繼承有兩種:extends 和 implements extends 類的繼承是單一繼承,也就是說,一個子類只能擁有一個父類,所以 extends 只能繼承一個類。 使用

Lua教程學習筆記三(重難點)

內容會持續更新,有錯誤的地方歡迎指正,謝謝! 上一篇文章:Lua菜鳥教程學習筆記二(一些細節)介紹了Lua的一些細節內容,但缺少重難點內容,本文總結一些重難點。 Lua 模組與包 定義模組 模組類似於一個封裝庫,從 Lua 5.1 開始,Lua 加入了標準的模組管理機制,

Lua教程學習筆記四(重難點 續)

內容會持續更新,有錯誤的地方歡迎指正,謝謝! Lua 檔案 I/O Lua I/O 庫用於讀取和處理檔案。分為簡單模式(和C一樣)、完全模式(以一種面對物件的形式,將所有的檔案操作定義為檔案控制代碼的方法)。如果同時讀取多個檔案的話,使用完全模式則較為合適。 簡單模式 以

hadoop學習筆記---Hadoop體系結構

         語言是表達思想最有利的武器! HDFS和MapReduce是Hadoop體系結構的核心,HDFS在叢集上實現了分散式檔案系統,MapReduce在叢集上實現了分散式計算和處理任務。HDFS在MapReduce任務處理過程中提供了對檔案操作和儲存的支援,Ma

stm32學習筆記(1)系統時鐘初始化函式

系統初始化函式步驟: 1:復位並配置暫存器向量表。 2:置位CR第十六位,開啟外部振盪器。 3:檢測CR第十七位,判斷外部振盪器是否準備就緒。若就緒,硬體會置位十七位。 *2和3設定的均是時鐘控制暫存器。 4:設定時鐘配置暫存器CFGR的8-10位為100使得APB1的時鐘

HTML教程學習筆記

最近想學習學習前端相關,先從基礎吧; 本文主要是在菜鳥筆記上的html教程中的筆記或者總結,主要給自己查詢; 參考連結:http://www.runoob.com/ HTML 教程 超文字標記語言(英語:HyperText Marku

SpringMVC學習筆記2——@SessionAttributes註解與@RequestMapping

Session與Request區別在於,springMVC處理時,將資料放在哪個程序裡。 在瀏覽器呼叫時,會出現區別,一旦弄錯,就會獲取不到資料。 先模擬一個取資料的一個實現。 假裝USER模型是資料庫中的資料,我模擬user屬性如下: packag

組合語言學習筆記

 1.1機器語言 計算機發展初期,人們都是用機器語言進行程式設計的,這也是人們能實現程式設計控制計算機的最低級別。那麼機器語言是什麼樣子的呢?就是用0和1組成的一個串(形如011010101),cpu的每一個功能對應著一個串,cpu得到這樣的串就去執行對應的功能,我們把這樣的串叫做一條機器指令。cpu提供的

叔的Linux私房基礎篇-學習筆記(一)

一行指令中第一個輸入的部分絕對是“指令(command)”或“可可執行檔案案(例如批次指令碼,script)” command 為指令的名稱,例如變換工作目錄的指令為 cd 等等; 中刮號[]並不存在於實際的指令中,而加入選項設定時,通常選項前會帶 - 號,例如 -h;有時候會使用選項的完整全名,則選 項前

叔的Linux私房基礎篇-學習筆記(二)

超簡單文字編輯器:nano 比較重要的幾個組合按鍵 正確的關機方法 觀察系統的使用狀態 : 下達"who"指令檢視誰還在線上 下達"netstat -a’'指令檢視網路連線狀態 下達"ps -aux"指令,看背景執行的程式 正確的關機指令使用 :

運維筆記:安裝與配置Apacheserver

str .cn apach tps 官網 壓縮 ron entos 本地 前幾天在在阿裏花了49.5買了一個月的主機。試著好用再續費吧。 地域:青島可用區:青島可用區ACPU:1核內存:512MB帶寬:1Mbps操作系統:CentOS 6.5 64位雲盾:是

MVC學習

沒有 orm 計劃 一是 今後 大學畢業 學習 自己的 管理 大學畢業已三年,菜鳥稱謂依然。畢業前使用過六個月的MVC,但是自從畢業後因為公司一直在用webForm,所以MVC就沒有再用過。直到最近打算用MVC做一個項目管理系統,才發現MVC已經變得陌生了,只有再從新學起。

Android的成長筆記(27)——SurfaceView的使用

llb white avi red .get 時也 Y軸 ++ watermark 前面有關自己定義View中進行了畫圖。但View的畫圖機制存在例如以下缺陷:1、View缺乏雙緩沖機制。2、當程序須要更新View上的圖像時,程序必須重繪View上顯示的整張圖片。3、新

新書 《跟一起學習Linux系統》發布

linux 項目 實戰 本文出自 “民工哥博客” 博客,請務必保留此出處http://mingongge.blog.51cto.com/2429897/1977487新書 《跟菜鳥一起學習Linux系統》發布

linux基礎學習(一)

導致 erp redhat ado water 切換用戶 學習 方法 x86 熟悉linux環境 1.虛擬機的控制虛擬機是在真機上建立的,為何要建立虛擬機,主要是防止由於錯誤操作導致不可挽回的結果。[kiosk@foundation0 Desktop]$ rht-vmctl

linux基礎學習(二 ) 上篇

com lower mar 刪除 .com [] 根目錄 col test 一.linux系統結構 首先我們學習linux的系統結構,linux系統中一切皆文件! 由上圖,可以看到linux是一個倒樹結構linux中所有的東西都是文件這些文件都在系統頂級目錄“/” /就是

linux基礎學習 (二) 中篇

文件中 rec 動作 mission 退出vim 第一個 51cto delet 關鍵字搜索 一.man的使用 man ->>manual ###man是手冊縮寫man man #####查看man命令的幫助man passwd

linux基礎學習 (二) 下篇

顯示名稱 保存 數字 sudoer linux 刪除用戶 arr 組的建立 51cto 1.用戶理解 用戶就是系統使用者的身份在系統中用戶存儲為若幹竄字符+若幹個系統配置文件用戶信息涉及到的系統配置文件:/etc/passwd ###用戶信息用戶:密碼:uid:gi

linux基礎學習 (三)

sha then 系統安全 .com img ugo 目錄下的文件 文件讀寫 The 文件權限 1.文件屬性的查看 練習:ls 查看當前目錄下的文件和目錄ls -l 查看當前目錄下的文件和目錄屬性ll 查看當前目錄下的文件和目錄屬性 stat test 查看文件

linux基礎學習 (四)

工作 進程優先級 監控系統 emctl 負載 img http 狀態 界面 一.進程 1.進程定義: 進程就是cpu未完成的工作. 2.ps命令 psa ##關於當前環境的所有進程x| -A ##所有進程f ##顯示進程從屬關系e ##顯示進程調用環境工具的