Skip to content

Commit

Permalink
Instruction Encoding
Browse files Browse the repository at this point in the history
  • Loading branch information
mnb27 authored Jun 13, 2020
0 parents commit 7498cbd
Show file tree
Hide file tree
Showing 4 changed files with 894 additions and 0 deletions.
219 changes: 219 additions & 0 deletions I_format.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,219 @@
def binary12(num):
li = []
if num >= 0:

for i in range(0, 12):
li.insert(0, int(num % 2))
num = int(num / 2)
else:
num3 = 4096 + num
for i in range(0, 12):
li.insert(0, int(num3 % 2))
num3 = int(num3 / 2)
return li


def binary5(num):
li = []
for i in range(0, 5):
li.insert(0, int(num % 2))
num = int(num / 2)

return li


def addi(rd, rs1, imm):
s1 = binary5(rs1)
s2 = binary12(imm)
s3 = binary5(rd)
li = []
# insert funct3
li[0:11] = s2
li[12:16] = s1
li.append(0)
li.append(0)
li.append(0)

li[20:24] = s3
# insert opcode
li.append(0)
li.append(0)
li.append(1)
li.append(0)
li.append(0)
li.append(1)
li.append(1)

return li


def ori(rd, rs1, imm):
s1 = binary5(rs1)
s2 = binary12(imm)
s3 = binary5(rd)
li = []

# insert funct3
li[0:11] = s2
li[12:16] = s1
li.append(1)
li.append(1)
li.append(0)
li[20:24] = s3
# insert opcode
li.append(0)
li.append(0)
li.append(1)
li.append(0)
li.append(0)
li.append(1)
li.append(1)

return li


def andi(rd, rs1, imm):
s1 = binary5(rs1)
s2 = binary12(imm)
s3 = binary5(rd)
li = []
# insert funct3
li[0:11] = s2
li[12:16] = s1
li.append(1)
li.append(1)
li.append(1)

li[20:24] = s3
li.append(0)
li.append(0)
li.append(1)
li.append(0)
li.append(0)
li.append(1)
li.append(1)

# insert opcode
return li


def ld(rd, rs1, imm):
s1 = binary5(rs1)
s2 = binary12(imm)
s3 = binary5(rd)
li = []
# insert funct3
li[0:11] = s2
li[12:16] = s1
li.append(0)
li.append(1)
li.append(1)

li[20:24] = s3
# insert opcode
li.append(0)
li.append(0)
li.append(0)
li.append(0)
li.append(0)
li.append(1)
li.append(1)

return li


def lb(rd, rs1, imm):
s1 = binary5(rs1)
s2 = binary12(imm)
s3 = binary5(rd)
li = []
# insert funct3
li[0:11] = s2
li[12:16] = s1
li.append(0)
li.append(0)
li.append(0)

li[20:24] = s3
# insert opcode
li.append(0)
li.append(0)
li.append(0)
li.append(0)
li.append(0)
li.append(1)
li.append(1)
return li


def lh(rd, rs1, imm):
s1 = binary5(rs1)
s2 = binary12(imm)
s3 = binary5(rd)
li = []
# insert funct3
li[0:11] = s2
li[12:16] = s1
li.append(0)
li.append(0)
li.append(1)

li[20:24] = s3
# insert opcode
li.append(0)
li.append(0)
li.append(0)
li.append(0)
li.append(0)
li.append(1)
li.append(1)
return li


def lw(rd, rs1, imm):
s1 = binary5(rs1)
s2 = binary12(imm)
s3 = binary5(rd)
li = []
# insert funct3
li[0:11] = s2
li[12:16] = s1
li.append(0)
li.append(1)
li.append(0)

li[20:24] = s3
# insert opcode
li.append(0)
li.append(0)
li.append(0)
li.append(0)
li.append(0)
li.append(1)
li.append(1)
return li


def jalr(rd, rs1, imm):
s1 = binary5(rs1)
s2 = binary12(imm)
s3 = binary5(rd)
li = []
# insert funct3
li[0:11] = s2
li[12:16] = s1
li.append(0)
li.append(0)
li.append(0)

li[20:24] = s3
# insert opcode
li.append(1)
li.append(1)
li.append(0)
li.append(0)
li.append(1)
li.append(1)
li.append(1)

return li
Loading

0 comments on commit 7498cbd

Please sign in to comment.