Professional Documents
Culture Documents
Chapter - 02 RISC V
Chapter - 02 RISC V
Edition
The Hardware/Software Interface
Chapter 2
Instructions: Language
of the Computer
Learning Outcomes
Upon completion of this chapter, students will be
able to:
convert a short RISC-V assembly code sequence
into machine code
convert a short RISC-V machine code sequence
ld x9, 64(x22)
add x9, x21, x9
sd x9, 96(x22)
Range: 0 to +2n – 1
Example
0000 0000 … 0000 10112
= 0 + … + 1×23 + 0×22 +1×21 +1×20
= 0 + … + 8 + 0 + 2 + 1 = 1110
Using 64 bits: 0 to +18,446,774,073,709,551,615
x x 1111...1112 1
x 1 x
Example: negate +2
+2 = 0000 0000 … 0010two
–2 = 1111 1111 … 1101two + 1
= 1111 1111 … 1110two
RISC-V instructions
Encoded as 32-bit instruction words
Small number of formats encoding operation code
(opcode), register numbers, …
Regularity!
Instruction fields
opcode: operation code
rd: destination register number
funct3: 3-bit function code (additional opcode)
rs1: the first source register number
rs2: the second source register number
funct7: 7-bit function code (additional opcode)
add x9,x20,x21
0 21 20 0 9 51
f in x20
temporaries x5, x6
Argument n in x10
Result in x10
imm[12] imm[11]
PC-relative addressing
Target address = PC + immediate × 2
Example 2: lock
addi x12,x0,1 // copy locked value
again: lr.d x10,(x20) // read lock
bne x10,x0,again // check if it is 0 yet
sc.d x11,(x20),x12 // attempt to store
bne x11,x0,again // branch if fails
Unlock:
sd x0,0(x20) // free lock
Static linking
Indirection table
Linker/loader code
Dynamically
mapped code
Simple portable
instruction set for
the JVM
Compiles
Interprets
bytecodes of
bytecodes
“hot” methods
into native
code for host
machine
li x19,0 // i = 0
for1tst:
bge x19,x11,exit1 // go to exit1 if x19 ≥ x11 (i≥n)
addi x19,x19,1 // i += 1
j for1tst // branch to test of outer loop
exit1:
1.5
0.5
0
C/none C/O1 C/O2 C/O3 Java/int Java/JIT
1.5
0.5
0
C/none C/O1 C/O2 C/O3 Java/int Java/JIT
2000
1500
1000
500
0
C/none C/O1 C/O2 C/O3 Java/int Java/JIT