• 大小: 3KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-05-16
  • 语言: Python
  • 标签: mips  反汇编  

资源简介

根据网上资料做了个mips指令的反汇编脚本,python写的,简单明了,可以作为机器码查表用

资源截图

代码片段和文件信息

from binascii import*

pro=open(“x““rb“)

def hexbit(x):
 x=int(x16)
 y=““
 while x!=0:
  y=str(x%2)+y
  x=x/2
 if len(y)<4:
  y=“0“*(4-len(y))+y
 return y

def hex32bit():
 x=hexlify(pro.read(4))
 y=““
 for i in xrange(8):
  y+=hexbit(x[i])
 return y
#-----------------------------
z=““
asm=open(“y.asm““a“)
def main():
 global z
 z=hex32bit()
 op=z[:6]
 if op==“000000“:r_type()
 if op==“000010“ or op==“000011“:j_type()
 else:i_type()
def bt(x):return str(int(x2))
#-------------------------
def r_type():
 rs=bt(z[6:11])
 rt=bt(z[11:16])
 rd=bt(z[16:21])
 shamt=bt(z[21:26])
 func=z[26:]
 if func==“100000“:asm.write(“add $“+rd+“$“+rs+“$“+rt+“\n“)
 if func==“100001“:asm.write(“addu $“+rd+“$“+rs+“$“+rt+“\n“)
 if func==“100010“:asm.write(“sub $“+rd+“$“+rs+“$“+rt+“\n“)
 if func==“100011“:asm.write(“subu $“+rd+“$“+rs+“$“+rt+“\n“)
 if func==“100100“:asm.write(“and $“+rd+“$“+rs+“$“+rt+“\n“)
 if func==“100101“:asm.write(“or $“+rd+“$“+rs+“$“+rt+“\n“)
 if func==“100110“:asm.write(“xor $“+rd+“$“+rs+“$“+rt+“\n“)
 if func==“100111“:asm.write(“nor $“+rd+“$“+rs+“$“+rt+“\n“)
 if func==“101010“:asm.write(“slt $“+rd+“$“+rs+“$“+rt+“\n“)
 if func==“101011“:asm.write(“sltu $“+rd+“$“+rs+“$“+rt+“\n“)

 if func==“000000“:asm.write(“sll $“+rd+“$“+rt+““+shamt+“\n“)
 if func==“000010“:asm.write(“srl $“+rd+“$“+rt+““+shamt+“\n“)
 if func==“000011“:asm.write(“sra $“+rd+“$“+

评论

共有 条评论

相关资源