Lecture 6
Lecture 6
Muhammad Tahir
Lecture 6
Contents
1 Assembly Programming
2/27
Assembly Programming Function Call Conventions
3/27
Assembly Programming Function Call Conventions
4/27
Assembly Programming Function Call Conventions
// Assume x6 = y
// Generating 32 - bit constant
lui x6 , 0 x12346
y = 0 x12345A78 ;
addi x6 , x6 , 0 xFFFFFA78
4/27
Assembly Programming Function Call Conventions
5/27
Assembly Programming Function Call Conventions
5/27
Assembly Programming Function Call Conventions
6/27
Assembly Programming Function Call Conventions
7/27
Assembly Programming Function Call Conventions
7/27
Assembly Programming Function Call Conventions
if (i == j )
f = g + h;
else
f = g - h;
Listing 1: C code.
label :
sub x10 , x11 , x12 # f = g - h;
exit :
addi x8 , x0 , 12
// GCD implementation based on
addi x9 , x0 , 9
Euclid algorithm
int gcd ( int a , int b)
gcd :
{
beq x8 , x9 , stop
while (a != b)
blt x8 , x9 , less
{
sub x8 , x8 , x9
if (a > b )
j gcd
a = a - b;
less :
else
sub x9 , x9 , x8
b = b - a;
j gcd
}
return a ;
stop :
}
j stop
Listing 3: C code for GCD. Listing 4: GCD assembly code.
9/27
Assembly Programming Function Call Conventions
10/27
Assembly Programming Function Call Conventions
11/27
Assembly Programming Function Call Conventions
12/27
Assembly Programming Function Call Conventions
12/27
Assembly Programming Function Call Conventions
12/27
Assembly Programming Function Call Conventions
13/27
Assembly Programming Function Call Conventions
Memory Allocation
0xBFFF FFF0
fp Stack
sp
Dynamic Data
Static Data
(global &static variables)
gp 0x1000 0000
Text
(code segment)
pc 0x0001 0000
Vector Table
0x0000 0000
14/27
Assembly Programming Function Call Conventions
// endless loop
while (1) {}
}
15/27
Assembly Programming Function Call Conventions
16/27
Assembly Programming Function Call Conventions
17/27
Assembly Programming Function Call Conventions
18/27
Assembly Programming Function Call Conventions
19/27
Assembly Programming Function Call Conventions
20/27
Assembly Programming Function Call Conventions
21/27
Assembly Programming Function Call Conventions
22/27
Assembly Programming Function Call Conventions
23/27
Assembly Programming Function Call Conventions
24/27
Assembly Programming Function Call Conventions
Suggested Reading
25/27
Assembly Programming Function Call Conventions
Acknowledgment
26/27
Assembly Programming Function Call Conventions
References
Waterman, A., Lee, Y., Avizienis, R., Patterson, D. A., and Asanovic, K.
(2016a).
The risc-v instruction set manual volume ii: Privileged architecture version
1.9.
EECS Department, University of California, Berkeley, Tech. Rep.
UCB/EECS-2016-129.
27/27