亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

電腦機(jī)器碼了解 機(jī)器碼是什么碼


電腦機(jī)器碼了解 機(jī)器碼是什么碼

文章插圖
程序語言(C,Java等)是人類能夠理解的語言,因此我們可以用程序語言編寫軟件,交給CPU去執(zhí)行,如果你直接將程序語言交給CPU去執(zhí)行,CPU壓根就不能理解這種語言,CPU只認(rèn)識(shí)它自己的語言-機(jī)器語言即機(jī)器碼,因此我們需要將程序語言翻譯成機(jī)器碼,翻譯的方式有兩種,一種是編譯,另外一種是解釋,編譯的意思是把整個(gè)程序一次性翻譯成機(jī)器碼,解釋的意思說,一句一句地翻譯,不管怎么樣,我們最終交給CPU的是機(jī)器碼,讓CPU去根據(jù)機(jī)器碼去做它該做的事情 。
C翻譯成機(jī)器碼
可以把計(jì)算機(jī)當(dāng)做一個(gè)黑盒子,輸入機(jī)器碼和數(shù)據(jù),CPU執(zhí)行后輸出內(nèi)容到內(nèi)存,如下圖所示
機(jī)器碼執(zhí)行圖
匯編語言是人類能夠理解的機(jī)器指令,后續(xù)我們舉例子時(shí),直接用匯編語言表示機(jī)器指令,它們是等價(jià)的 。
一.什么是機(jī)器碼?機(jī)器碼也叫機(jī)器指令,就像我們?nèi)祟惏l(fā)出的指令一樣,比如:“小明,去衛(wèi)生間里拿一把掃帚去打掃房間,機(jī)器碼就是這條指令,這條指令里就包含了干什么事情,去哪里干 。
1.1 機(jī)器碼都有些什么內(nèi)容機(jī)器碼是與計(jì)算機(jī)硬件緊密關(guān)聯(lián)的,不同的CPU,機(jī)器碼不一樣,就好比不同的國(guó)家,語言不一樣類似,比如我們常用的CPU如Inter Pentium系列,酷睿系列,AMD 銳龍,ARM,MIPS,IBM PowerPC等,他們的機(jī)器碼就各不相同,但都有一個(gè)共同的規(guī)范就如下圖所示 。
機(jī)器碼包含的內(nèi)容
如上圖所示機(jī)器碼共同的規(guī)范就是他們都包括操作碼,控制位(可選),操作數(shù)(可選),操作數(shù)可以有多個(gè)(一般1-3個(gè))甚至沒有 。
操作碼:表示指令類型,比如ADD表示加法指令,SUB表示減法指令 。一個(gè)處理器可以包含非常復(fù)雜,面面俱到的指令,也可以包含十分精簡(jiǎn),短小精干的指令,正因如此,在CPU界分成了兩大門派CISC(復(fù)雜指令集)和RISC(精簡(jiǎn)指令集),CISC屬于大包大攬,啥都想干,RISC是我只敢我能做的事情,其他的事情交給編譯器,下面的表格為這兩個(gè)門派的成員
CISCRISCInter,AMDARM,MIPS,IBM PowerPC控制位:幾乎用不到,不做詳解
操作數(shù):表示指令需要操作的數(shù)據(jù),在機(jī)器碼中,操作數(shù)可不一定是放在那里,等著你直接去拿的,有以下幾種獲取的方式
立即數(shù)尋址:立即數(shù)是一個(gè)整數(shù),例如5,不需要從寄存器或者內(nèi)存中獲取,它本身就是操作數(shù),例如ARM CPU下的指令
ADDr1,r2,#5上面代碼中5就是立即數(shù),是常量,直接將R2寄存器中的內(nèi)容與5相加,存儲(chǔ)到r1寄存器中 。
直接尋址:從內(nèi)存中直接獲取操作數(shù),例如Inter Pentium CPU下的指令
MOV AX,[2468]上面代碼將內(nèi)存地址2468上指向的內(nèi)容寫入到ax寄存器
間接尋址:不直接從內(nèi)存地址獲取操作數(shù),而是將內(nèi)存地址存儲(chǔ)在寄存器中,通過寄存器間接獲取操作數(shù),例如ARM下的指令
LDRr1, [r2]上面代碼,r2寄存器中存儲(chǔ)的是內(nèi)存地址,上面指令表達(dá)的意思是,將r2寄存器中存儲(chǔ)的內(nèi)存地址指向的內(nèi)容寫入到r1寄存器 。
偏移量間接尋址:它是間接尋址變種的一種,例如ARM下的指令
LDR r2,[r3,#8]上面代碼,r3寄存器中存儲(chǔ)的是內(nèi)存地址,上面指令表達(dá)的意思是,將r3寄存器中存儲(chǔ)的內(nèi)存地址加上偏移8后算出的內(nèi)存地址指向的內(nèi)容寫入到r2寄存器 。
1.2 機(jī)器碼的格式正如上文提到不同的CPU類型機(jī)器碼不同,有的CPU機(jī)器碼支持動(dòng)態(tài)長(zhǎng)度,動(dòng)態(tài)擴(kuò)展,如Inter系列,它有時(shí)候可以一條指令中有多個(gè)操作碼,有的CPU的機(jī)器碼長(zhǎng)度是固定的,如ARM,我們可以分析大多數(shù)的機(jī)器碼,大多數(shù)的機(jī)器碼占一個(gè)字(32位或64位),一般超過一個(gè)字的機(jī)器碼不多,可能只有Inter系列會(huì)有,一般用不到,這里不做闡述 。


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助: