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 of the...