You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
1017 B
ArmAsm

5 months ago
.global _start
# let's us export an elf file so the linker can see it
_start:
### Invoking the Write syscalls ###
# Check `man 2 write`
# ssize_t write(int fd, const void *buf, size_t count)
# stdout FD =1 by the way in standard linux
# Setup syscall number in a7 to be the write syscall (which is 64)
addi a7, zero, 64
# put the file descriptor value into a0
addi a0, zero, 1
# We need to load into a1 the address of our helloworld label
la a1, helloworld
# Now we need to set the last argument to the string of the string we want to write
addi a2, zero, 15
ecall
### SYSTEM EXIT ###
# Adding into a7 the number 93 which is syscall number for exit
addi a7, zero, 93
# check man exit `void exit(int status)`. We need to put into a0 the argument to exit syscall
addi a0, zero, 13
# invoke the syscall
ecall
# This is a label called helloworld.
# The string is 15 bytes long since this is ascii
helloworld:
.ascii "Hello, RISC V\n"