RISC-V assembly language
The following RISC-V assembly language example is a complete application that runs on a RISC-V processor:
.section .text
.global main
main:
# Reserve stack space and save the return address
addi sp, sp, -16
sd ra, 0(sp)
# Print the message using the C library puts function
1: auipc a0, %pcrel_hi(msg)
addi a0, a0, %pcrel_lo(1b)
jal ra, puts
# Restore the return address and sp, and return to caller
ld ra, 0(sp)
addi sp, sp, 16
jalr zero, ra, 0
.section .rodata
msg:
.asciz "Hello, Computer Architect!\n"
This program prints the following message in a console window and then exits:
Hello, Computer Architect!
The following are some points of interest within the assembly code:
- The
%pcrel_hi
and%pcrel_lo
directives select the high 20 bits (%pcrel_hi
) or low 12 bits (%pcrel_lo
) of the PC-relative address of the label provided as an argument. The combination...