1. 程式人生 > >硬體設計測試中,MIPS彙編指令翻譯成二進位制編碼的Python實現

硬體設計測試中,MIPS彙編指令翻譯成二進位制編碼的Python實現

最近在做計算機體系結構與組成原理的實驗,需要寫MIPS指令系統的CPU。在測試時,人工將需要測試的指令翻譯成二進位制的編碼實在有些繁瑣,而且極易出錯,正好最近在學習python,就寫了一個實用的指令碼,來完成這個工作。

由於我們實現的CPU暫時只實現了16條指令,分別是:

add rd,rs,rt 

addu rd,rs,rt 

addi rt,rs,imm 

addiu rt,rs,imm 

sub rd,rs,rt 

subu rd,rs,rt 

nor rd,rs,rt 

xori rt,rs,imm 

clo rd, rs

clz rs,rs

slt rd,rs,rt 

sltu rd,rs,rt 

slti rt,rs,imm 

sltiu rt,rs imm 

blez rs,imm 

j target 

因此這個指令碼只涉及了這些指令的內容,以後再擴充套件吧。

下面說一下實現思路:

1、從一個檔案中讀取MIPS的彙編指令;

2、通過字串處理,然後將其各個部分進行匹配;

3、將生成的二進位制編碼寫到一個檔案中。

需要注意的是,指令應該向上邊的示例一樣,在操作符和運算元之間應該有個空格,運算元之間以逗號和若干(最好0)個空格分隔,每行寫一條指令,指令前最好沒有空字元。由於這個指令碼主要是自己用,魯棒性不是很好,見諒。

下面直接上程式碼:

 

Reference:

《Mips instruction Reference》

相關推薦

硬體設計測試,MIPS彙編指令翻譯二進位制編碼Python實現

最近在做計算機體系結構與組成原理的實驗,需要寫MIPS指令系統的CPU。在測試時,人工將需要測試的指令翻譯成二進位制的編碼實在有些繁瑣,而且極易出錯,正好最近在學習python,就寫了一個實用的指令碼,來完成這個工作。 由於我們實現的CPU暫時只實現了16條指令,分別是:

C表示式彙編指令

C 表示式中的彙編指令 asm 為 gcc 中的關鍵字,asm 表示式為在 C程式碼中嵌套匯編指令,該表示式只是單純的替換出彙編程式碼,並不對彙編程式碼的含義進行解析。 asm 表示式有兩種形式,第二種 asm-qualifiers 包含了 goto 語句。 第一種形式為常見的用法,AssemblerTemp

圖片的文字如何翻譯英文

  如果給你一張帶有文字的圖片,需要你將文字內容翻譯成英文,這時候該怎麼辦呢?你會選擇手動輸入文字到相關翻譯工具中進行翻譯嗎,這顯然不是一種有效的方法,比較耽誤時間,下面小編就來為大家分享一種簡單將圖中文字翻譯成英文的方法。   參考工具:迅捷OCR文字識別軟體   操作步驟:   1:首先需要做好準備

【探索】機器指令翻譯 JavaScript

前言 前些時候研究指令碼混淆時,打算先學一些「程式流程」相關的概念。為了不因太枯燥而放棄,決定想一個有趣的案例,可以邊探索邊學。 於是想了一個話題:嘗試將機器指令 1:1 翻譯 成 JavaScript,這樣就能在瀏覽器中,直接執行等價的邏輯。 為了簡單起見,這裡選擇古董級 CPU —— MOS 6502。

四十年前的 6502 CPU 指令翻譯 JS 程式碼會是怎樣

去年折騰的一個東西,之前 blog 裡也寫過,不過那時邊琢磨邊寫,所以比較雜亂,現在簡單完整地講解一下。 前言 當時看到一本虛擬機器相關的書,正好又在想 JS 混淆相關的事,無意中冒出個想法:能不能把某種 CPU 指令翻譯成等價的 JS 邏輯?這樣就能在瀏覽器裡直接執行。 注意,這裡說的是「翻譯」,而不是模擬

設計模式之單例模式與工廠模式的Python實現(一)

1. 單例模式 單例模式(Singleton Pattern)是一種常用的軟體設計模式,該模式的主要目的是確保某一個類只有一個例項存在。當你希望在整個系統中,某個類只能出現一個例項時,單例物件就能派上用場。 比如,某個伺服器程式的配置資訊存放在一個檔案中,客戶端通過一個 AppConfig 的類來讀取配置檔案

介面測試基礎(fiddler、postman的使用、python實現測試介面程式)

寫在前面:本文主要的章節規劃:   1.什麼是介面測試    另外,有的時候會直接呼叫別的公司的介面,比如銀行的、淘寶的、支付寶的,此時也需要做介面測試以及驗證資料; 做介面測試的好處:     

在資料處理常用的5種概率分佈的python實現

1.二項分佈 from scipy.stats import binom, norm, beta, expon import numpy as np import matplotlib.pyplot

設計一個演算法,給一個字串進行二進位制編碼,使得編碼後字串的長度最短。(哈弗曼編碼

美團點評2016研發工程師程式設計題(二) 請設計一個演算法,給一個字串進行二進位制編碼,使得編碼後字串的長度最短。 輸入描述: 每組資料一行,為待編碼的字串。保證字串長度小於等於1000。 輸出描述: 一行輸出最短的編碼後長度。 輸入例子: MT-TECH-TEA

資料結構-二叉樹(1)以及前序、序、後序遍歷(python實現

上篇文章我們介紹了樹的概念,今天我們來介紹一種特殊的樹——二叉樹,二叉樹的應用很廣,有很多特性。今天我們一一來為大家介紹。 二叉樹 顧名思義,二叉樹就是隻有兩個節點的樹,兩個節點分別為左節點和右節點,特別強調,即使只有一個子節點也要區分它是左節點還是右節點。 常見的二叉樹有一般二叉樹、完全二叉樹、滿二叉樹、線

【不斷更新】記錄一下做CTF逆向題目時常用到的彙編指令

本文主要記錄自己在做CTF逆向題目過程中常用到的彙編指令 不斷更新中...... cdq指令它大多出現在除法運算之前。它實際的作用只是把EDX的所有位都設成EAX最高位的值 idiv是有符號數除法指令,完成兩個有符號數相除 memset是計算機中C/C++語言函式。

ARM彙編LDR偽指令和LDR指令

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

彙編的移位指令(8086CPU)

原創 8086CPU中有8條移位指令,分為兩大類。 非迴圈移位指令: SAL  ——  算術左移  ——  最高位移入標誌狀態位CF SAR  ——  算術右移  ——  最低位移入CF,最高位不變。 比如說:將10000000算術右移7位,應該變成11111111,而邏輯右移7位,則不考慮符號

軟體測試測試用例常用的設計方法分析

一、場景法      官方:通過運用場景法對系統的功能點或業務流程描述,從而提高測試效果。場景法一般包含基本流和備選流,從一個流程開始,通過描述經過的路徑來確定的過程,經過遍歷所有的基本流和備用流來完成整個場景。     個人總結:設計

智慧硬體設計如何選什麼音訊介面I2S、PDM、TDM?

在智慧硬體和物聯網產品設計中,經常遇到聲音的傳輸。本文主要講一下最常用的音訊介面,以及使用場景。 主要分類:模擬、數字(I2S、PCM、PDM、TDM) 模擬音訊,就是功放輸出的,驅動音箱和喇叭的音訊。模擬麥克風取樣回來的資料也是模擬音訊。通常會有單端或差分兩種訊號。

嵌入式開發的一些硬體設計上的坑

做嵌入式系統開發,經常要接觸硬體。做嵌入式開發對數位電路和類比電路要有一定的瞭解。這樣才能深入的研究下去。下面我們簡單的介紹嵌入式開發中的一些硬體相關的概念。 電平(Level) 在數位電路中,分為高電平和低電平,分別用1和0表示。一個數字電路的管腳,總是存在一

單元測試測試用例的設計方法

單元測試中測試用例的設計方法 1. 用於語句覆蓋的基路徑法 基路徑法保證設計出的測試用例,使程式的每一個可執行語句至少執行一次,即實現語句覆蓋。基路徑法是理論與應用脫節的典型,基本上沒有應用價值,讀者稍作了解即可,不必理解和掌握。 基路徑法步驟如下: 1)畫出程式的控制流圖 控制

硬體設計電容的選擇心得

去耦電容的選擇不存在與頻率的精確對應關係,理論上越大越好,但現實中所有器件都不是理想器件,不論何種電容,ESL、ESR都是必然存在的,於是實際電容的頻響曲線明顯呈非線性,僅在一定頻率區間內基本符合純電容的理論計算結果,超出一定界限後就與理論值越差越遠,超到一定程

[轉載]在Matlab實現FPGA硬體設計

摘要:System Generator for DSP是Xilinx公司開發的基於Matlab的DSP開發工具同時也是一個基於FPGA的訊號處理建模和設計工具。文章介紹了在Matlab中使用 System Generator for DSP實現FPGA硬體設計的方法,同時給出了一個應用例項。     關鍵詞

彙編基本的指令格式

指令中符號解釋:R代表暫存器  M代表記憶體單元 I代表立即數 運算指令: ADD R/M , R/M/I    加法指令(減法類似) XCHG R/M ,R    兩數交換指令 INC R/M   自增指令(自減類