㈠ 8086CPU中匯編指令編譯成機器指令後是多少位
8086CPU中匯編指令編譯成機器指令後是多少位?
要看是什麼樣的匯編指令,按指令長度
可以分為單位元組、雙晌租斗位元組、宴磨3位元組、4位元組。
如
空操作指令
即
NOP
指令
匯編後的機器指令為
00H
為單位元組
指令長度只有8位
MOV
AX,0123H
匯編後的機器指型猛令為
B8H
23H
01H
為3位元組
指令長度只有24位
呵呵
滿意就選滿意回答嘍
㈡ CPU指令集的概念和作用
這里不再進行正式而科學的描述,如果想了解關於「指令集」最專業的權威的定義,你可以去網路中搜索了解。
這里簡單地打個比方:缺乏某種指令集的CPU,進行相關運算會非常慢甚至無法進行。就好比一個不會乘法口訣的人,想計算「一斤大白菜3塊錢,買8斤需要多少錢」這個算數問題,只能掰著手指用加法慢慢算,結果算了半分多鍾才出結果。
而擁有了指令集的加持後,就好比掌握了乘法口訣,可以瞬間「三八二十四」給出計算結果。
㈢ 求解:Cpu執行的指令來自內存,那內存中的指令來自哪裡如何產生
來自茄咐應用程氏納判序,應用程序將指令寫入內殲改存。
㈣ CPU的指令集有哪些
SSE指令集
由於MMX指令並沒有帶來3D游戲性能的顯著提升,1999年Intel公司在Pentium III CPU產品中推出了數據流單指令序列擴展指令(SSE)。SSE兼容MMX指令,它可以通過SIMD(單指令多數據技術)和單時鍾周期並行處理多個浮點來有效地提廳正高浮點運算速度。
SSE2指令集
在Pentium 4 CPU中,Intel公司開發了新指令集SSE2。這一次新開發的SSE2指令一共144條,知伏猜包括浮點SIMD指令、整形SIMD指令、SIMD浮點和整形數據之間轉換、數據在MMX寄存器中轉換等幾大部分。
SSE3指令集
相對於SSE2,SSE3又新增加了13條新指令,此前它們被統稱為pni。13條指令中,一條用於視頻解碼,兩條用於線程同步,其餘用於復雜的數學運算、浮點到整數轉換和SIMD浮點運算。
SSE4指令集
SSE4又增加了50條新的增加性能的指令,這些指令有助於編譯、媒體、字元/文本處理和程序指向加速。
3D Now!擴展指令集
3D Now!指令集是AMD公司1998年開發的多媒體擴展指令集,共有21條指令。針對MMX指令集沒有加強浮點處理能力的弱點,重點提高了AMD公司K6系列CPU對3D圖形的處理能力。
X86指令集
X86指令集是Intel為其第一塊16位CPU(i8086)專門開發的,IBM1981年推出的世界第一台PC機中的CPU—i8088(i8086簡化版)使用的也是X86指令,同時電腦中為提高浮點數據處理能力而增加的X87晶元系列數學協處理器則另外使用X87指令,以後X86指令集和X87指令集統稱為X86指令集。
EM64T指搭型令集
Intel公司的EM64T(Extended Memory 64 Technology)即64位內存擴展技術。該技術為伺服器和工作站平台應用提供擴充的內存定址能力,擁有更多的內存地址空間
RISC指令集
RISC指令集是以後高性能CPU的發展方向。它與傳統的CISC(復雜指令集)相對。相比而言,RISC的指令格式統一,種類比較少,定址方式也比復雜指令集少。目前使用RISC指令集的體系結構主要有ARM、MIPS。
3DNow!+指令集
在原有的指令集基礎上,增加到52條指令,其中包含了部分SSE指令,該指令集主要用於新型的AMD CPU上。
㈤ 簡述CPU執行一條指令的過程
幾乎所有的馮·諾伊曼型計算機的CPU,其工作都可以分為5個階段:取指令、指令解碼、執行指令、訪存取數、結果寫回。
1.取指令轎做階段
取指令(InstructionFetch,IF)階段是將一條指令從主存中取到指令寄存器的過程。
程序計數器PC中的數值,用來指示當前指令在主存中的位置。當一條指令被取出後,PC中的數值將根據指令字長度而自動遞增:若為單字長指令,則(PC)+1àPC;若為雙字長指令,則(PC)+2àPC,依賣唯此類推。
2.指令解碼階段
取出指令後,計算機立即進入指令解碼(InstructionDecode,ID)階段。
在指令解碼階段,指令解碼器按照預定的指令格式,對取回的指令進行拆分和解釋,識別區分出不同的指令類別以及各種獲取操作數的方法。
在組合邏輯控制的計算機中,指令解碼器對不同的指令操作碼產生不同的控制電位,以形成不同的微操作序列;在微程序控制的計算機中,指令解碼器用指令操作碼來找到執行該指令的微程序的入口,並從此入口開始執行。
3.執行指令階段
在取指令和指令解碼階段之後,接著進入執行指令(Execute,EX)階段。
此階段的任務是完成指令所規定的各種操作,具體實現指令的功能。為此,CPU的不同部分被連接起來,以執行所需的操作。
4.訪存取數階段
根據指令需要,有可能要訪問主存,讀取操作數,這樣就進入了訪存取數(Memory,MEM)階段。
此階段的任務是:根據指令地址碼,得到操作數在主存中的地址,並從主存中讀取該操作數用於運算。
5.結果寫回階段
作為最後一個階段,結果寫回(WriteBack,WB)階段把執行指令階段的運行結果數據「寫回」到某種存儲形式:
結果數據經常被寫到CPU的內部寄存器中,以便被後續的指令快速地存取;
在有些情況下,結果數據也可被寫入相對較慢、但較廉價且容量較大的主存。許多指令還會改變程序狀態字寄存器中標志位的狀態,這些標志位標識著不同的操作結果,可被用來影響程序的動作。
在指令執行完畢、結果數據寫回之後,若無意外事件(如結果溢出等)發生,計算機就接著從程序計數器PC中取得下一條指令地址,開始新一輪的循環,下一個指令周期將順序取出下一條指令。
(5)cpu編譯指令擴展閱讀:
指令的執行過程例子:
開機時,程序計算器PC變為0000H。然後單片機在時序電路作用下自動進入執行程序過程。執行過程實際上就是取出指令(取出存儲器中事先存放的指令階段)和執行指令(分析和執行指令)的循環過程。
例如執行指令:MOVA,#0E0H,其機器碼為「74HE0H」,該指令的功能是把操作數E0H送入累加器。
0000H單元中已存放74H,0001H單元中已存放E0H。當單片機開始運行時,首先是進入取指階段,其次序是:
1.程序計數器的內容(這時是0000H)送到地址寄存器;
2.程序計數器的內容自動加1(變為0001H);
3.地址寄存器的內容(0000H)通過內部地址匯流排送到存儲器,以存儲器中地址解碼電跟,使地址為0000H的單元被選中;
4.CPU使讀控制線有效;
5.在讀命令控制下被選中存儲器單元的內容(此時應為74H)送到內部數據匯流排上,因為是取指階段,所以該內容通過數據匯流排被送到指令寄存器。至此,取指階段完成,進入解碼分析和執行指令階段。
由於本次進入指令寄存器中的內容是74H(操作碼),以解碼器解碼後單片機就會知道該指令是要將一個數送到A累加器,而該數是在這個代碼的下一個存儲單元。
所以,執行該指令還必須把數據(E0H)從存儲器中取出送到CPU,即還要在存儲器中取第二個位元組。其過程與取指階段很相似,只是此時PC已為0001H。指令解碼器結合時序部件,產生74H操作碼的微操作系列,使數字E0H從0001H單元取出。
因為指令是要求把取得的數送到A累加器,所以取出的數字經內部數據匯流排進入A累加器,而不是進入指令寄存器。至此,一條指令的執行完畢。單片機中PC="0002H",PC在CPU每次向存儲器取指或取數時中帆培自動加1,單片機又進入下一取指階段。
這一過程一直重復下去,直至收到暫停指令或循環等待指令暫停。CPU就是這樣一條一條地執行指令,完成所有規定。
㈥ 關於cpu指令集和編譯器的問題
這些軟體在編寫時也考慮到了這點,所以用兼容的方式是可以運行的,當然,在優化過的程序(與指令集最匹配)中肯定會獲得較好的運行效率。
個人觀點,不夠專業,僅供參考!
㈦ 編譯器如何將編程語言翻譯成目標CPU的特定指令集
編譯器如何將編程語言翻譯成目標CPU的特定指令集?
MSIL
MSIL是將.NET代碼轉化為機器語言的一個中間過程。它是一種介於高級語言和基於Intel的匯編語言的偽匯編語言。當用戶編譯一個.NET程序時,編譯器將源代碼翻譯成Microsoft 中間語言 (MSIL),它是一組可以有效地轉換為本機代碼且獨立於CPU的指令。當執行這些指令時,實時(JIT)編譯器將它們轉化為CPU特定的代碼。由於公共語言運行庫支持多種實時編譯器,因此同一段msil代碼可以被不同的編譯器實時編譯並運行在不同的結構上。從理論上來說,MSIL將消除多年以來業界中不同語言之間的紛爭。在.NET的世界中可能出現下面的情況一部分代碼可以用EFFIL實現,另一部分代碼使用C#或VB.NET完成的,但是最後這些代碼都將被轉換為中間語言。
㈧ cpu含有多少條指令
CPU的指令有多少,CPU的各項指數是多少,讓我們帶著這些疑問,一起看下去吧。
cpu 含有多少條指令:
Intel CPU的擴展指令集對於CPU來說,在基本功能方面,它們的差別並不太大,基本的指令集也都差不多,但是許多廠家為了提升某一方面性能,又開發了擴展指令集,擴展指令集定義了新的數據和指令,能夠大大提高某方面數據處理能力,但必需要有軟體支持,下面我們來i7處理器看一看歷代Intel指令集都有哪些:MMX指令集 MMX(Multi Media eXtension,多媒體擴展指令集)指令集是Intel公司於1996年推出的一項多媒體指令增強技術。MMX指令集中包括有57條多媒體指令,通過這些指令可以一次處理多個數據,在處理結果超過實際處理能力的時候也能進行正常處理,這樣在軟體的配合下,就可以得到更高的性能。MMX的益處在於,當時存在的 操作系統 不必為此而做出任何修改便可以輕松地執行MMX程序。但是,問題也比較明顯,那就是MMX指令集與x87浮點運算指令不能夠同時執行,必須做密集式的交錯切換才可以正常執行,這種情況就勢必造成整個系統運行質量的下降。 MMX指令集Intel代表處理器:Pentium MMXSSE指令集SSE(Streaming SIMD Extensions,單指令多數據流擴展)指令集是Intel在Pentium III處理器中率先推出的。其實,早在PIII正式推出之前,Intel公司就曾經通過各種 渠道 公布過所謂的KNI(Katmai New Instruction)指令集,這個指令集也就是SSE指令集的前身,並一度被很多傳媒稱之為MMX指令集的下一個版本,即MMX2指令集。究其背景,原來"KNI"指令集是Intel公司最早為其下一代晶元命名的指令集名稱,而所謂的"MMX2"則完全是硬體評論家們和媒體憑感覺和印象對"KNI"的 評價,Intel公司從未正式發布過關於MMX2的消息。而最終推出的SSE指令集也就是所謂勝出的"互聯網SSE"指令集。SSE指令集包括了70條指令,其中包含提高3D圖形運算效率的50條SIMD(單指令多數據技術)浮點運算指令、12條MMX 整數運算增強指令、8條優化內存中連續數據塊傳輸指令。理論上這些指令對目前流行的圖像處理、浮點運算、3D運算、視頻處理、音頻處理等諸多多媒體應用起到全面強化的作用。SSE指令與3DNow!指令彼此互不兼容,但SSE包含了3DNow!技術的絕大部分功能,只是實現的 方法 不同。SSE兼容MMX指令,它可以通過SIMD和單時鍾周期並行處理多個浮點數據來有效地提高浮點運算速度。 SSE指令集Intel代表處理器:Pentium IIISSE2指令集 SSE2(Streaming SIMD Extensions 2,Intel官方稱為SIMD流技術擴展2或數據流單指令多數據擴展指令集2)指令集是Intel公司在SSE指令集的基礎上發展起來的。相比於SSE,SSE2使用了144個新增指令,擴展了MMX技術和SSE技術,這些指令提高了廣大應用程序的運行性能。隨MMX技術引進的SIMD整數指令從64位擴展到了128 位,使SIMD整數類型操作的有效執行率成倍提高。雙倍精度浮點SIMD指令允許以 SIMD格式同時執行兩個浮點操作,提供雙倍精度操作支持有助於加速內容創建、財務、工程和科學應用。除SSE2指令之外,最初的SSE指令也得到增強,通過支持多種數據類型(例如,雙字和四字)的算術運算,支持靈活並且動態范圍更廣的計算功能。SSE2指令可讓軟體開發員極其靈活的實施演算法,並在運行諸如MPEG-2、MP3、3D圖形等之類的軟體時增強性能。Intel是從Willamette核心的Pentium 4開始支持SSE2指令集的,而AMD則是從K8架構的SledgeHammer核心的Opteron開始才支持SSE2指令集的。 SSE2指令集Intel代表處理器:老Pentium 4SSE3指令集 SSE3(Streaming SIMD Extensions 3,Intel官方稱為SIMD流技術擴展3或數據流單指令多數據擴展指令集3)指令集是Intel公司在SSE2指令集的基礎上發展起來的。相比於SSE2,SSE3在SSE2的基礎上又增加了13個額外的SIMD指令。SSE3中13個新指令的主要目的是改進線程同步和特定應用程序領域,例如媒體和游戲。這些新增指令強化了處理器在浮點轉換至整數、復雜演算法、視頻編碼、SIMD浮點寄存器操作以及線程同步等五個方面的表現,最終達到提升多媒體和游戲性能的目的。Intel是從Prescott核心的Pentium 4開始支持SSE3指令集的,而AMD則是從2005年下半年Troy核心的Opteron開始才支持SSE3的。但是需要注意的是,AMD所支持的SSE3與Intel的SSE3並不完全相同,主要是刪除了針對Intel超線程技術優化的部分指令。 SSE3指令集Intel代表處理器:基於Prescott核心新Pentium 4SSSE3指令集SSSE3(Supplemental Streaming SIMD Extensions 3)內置於Intel公司微處理器中的多媒體關聯的擴張指令集。是擴張了SSE3的產品,於2006年7月首次裝載在Core 2 Duo處理器中SSE3裝載了用一個命令一口氣處理復數個數據的「SIMD」的處理方式,特別在處理語音和動畫關聯上能夠高速地發揮力量。SSSE3是在 SSE3命令的基礎上又添加了32個新命令的產品,其原名為TNI,是SSE4指令集的子集,包含有13條命令。目前SSSE3也是最先進的指令集,增強了CPU的多媒體、圖形圖象和Internet等的處理能力。 SSSE3指令集Intel代表處理器:65nm 酷睿2SSE4指令集的兩個分支:SSE4.1 + SSE4.2SSE4指令集被認為是2001年以來Intel最重要的指令集擴展,包含54條指令。 Intel在Penryn處理器中加入了對SSE4.1的支持,共增加了47條新指令,提升了處理器在圖形、3D圖像與游戲、視頻編碼與影音處理等方面的性能表現。本次在Nehalem處理器中,進一步支持了SSE4.2指令集。SSE4.2完整的實現了SSE4指令集,相對於SSE4.1加入了7條新指令。 SSE4.1指令集45納米加入了SSE4.1指令集,令處理器的多媒體處理能力得到最大70%的提升。SSE4加入了6條浮點型點積運算指令,支持單精度、雙精度浮點運算及浮點產生操作,且IEEE 754指令 (Nearest, -Inf, +Inf, and Truncate) 可立即轉換其路徑模式,大大減少延誤,這些改變將對游戲及 3D 內容製作應用有重要意義。此外,SSE4加入串流式負載指令,可提高以圖形幀緩沖區的讀取數據頻寬,理論上可獲取完整的快取緩存行,即每次讀取64Bit而非8Bit,並可保持在臨時緩沖區內,讓指令最多可帶來8倍的讀取頻寬效能提升,對於視訊處理、成像以及圖形處理器與中央處理器之間的共享數據應用,有著明顯的效能提升。SSE4指令集讓45nm Penryn處理器增加了2個不同的32Bit向量整數乘法運算單元,並加入8位無符號(Unsigned)最小值及最大值運算,以及16Bit及32Bit有符號 (Signed) 運算。在面對支持SSE4指令集的軟體時,可以有效的改善編譯器效率及提高向量化整數及單精度代碼的運算能力。同時,SSE4改良插入、提取、尋找、離散、跨步負載及存儲等動作,令向量運算進一步專門。 SSE4.1指令集Intel代表處理器:45nm 酷睿2SSE4.2指令集 在Nehalem架構的Core i7處理器中,SSE4.2指令集被引入,加入了STTNI(字元串文本新指令)和ATA(面向應用的加速器)兩大優化指令。SSE4.2新加入的幾條新指令有兩類。第一類是字元串與文本新指令STTNI,STTNI包含了四條具體的指令。STTNI指令可以對兩個16位的數據進行匹配操作,以加速在XML分析方面的性能。據Intel表示,新指令可以在XML分析方面取得3.8倍的性能提升。第二類指令是面向應用的加速指令ATA。ATA包括冗餘校驗的CRC32指令、計算源操作數中非0位個數的POPCNT指令,以及對於打包的64位算術運算的SIMD指令。CRC32指令可以取代上層數據協議中經常用到的循環冗餘校驗,據Intel表示其加速比可以達到6.5~18.6倍;POPCNT用於提高在DNA基因 配對 、聲音識別等包含大數據集中進行模式識別和搜索等操作的應用程序性能。 Intel也公布了支持新指令集的開發工具。這些工具涵蓋了主流的編譯開發環境。目前已明確支持SSE4.2的開發環境包括:Intel C++ Compiler 10.X、微軟的Visual Studio 2008 VC++、GCC 4.3.1、Sun Studio Express等。程序員可以直接使用高級編程語言編程,編譯器會自動生成優化結果。當然程序員也可以用內嵌匯編的方式來達到目的。 SSE4指令集Intel代表處理器:45nm i7