资源简介
根据网上资料做了个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+“$“+
评论
共有 条评论