Starting to learn Assembly for ARMV8 with a Khadas Vim3 and Ubuntu 24.04

I'm starting to learn assembly for ARMV8(Aarch64). I've got a Khadas Vim 3 board with a Amlogic Cortex A73 processor. I have flashed the eMMC with Ubuntu 24.04 with the USB Burning Tool. To start this off I'm going to follow some tutorials and take some examples from them. I have corrected some errors so I want somewhere to keep track of the code that works.

This is from chapter 2 of Thinkingeek's tutorial

// first.s
.text

.globl main

main:
     mov w0, #2
     ret

Now to assemble it

$ aarch64-linux-gnu-as -c -o first.o first.s

and then link it

$ aarch64-linux-gnu-gcc -static -o first first.o

To run it

$ ./first
$ echo $?
$ 2 

2 is the return

Now let's try a hello world. This is from Peter Nelson's tutorial

// hello.s

.data /* Data segment: define our message string and calculate its length. */
msg:
    .ascii        "Hello, ARM64!\n"
len = . - msg

.text /* Our application's entry point. */
.globl main
main:
    /* syscall write(int fd, const void *buf, size_t count) */
    mov     x0, #1      /* fd := STDOUT_FILENO */
    ldr     x1, =msg    /* buf := msg */
    ldr     x2, =len    /* count := len */
    mov     w8, #64     /* write is syscall #64 */
    svc     #0          /* invoke syscall */

    /* syscall exit(int status) */
    mov     x0, #0      /* status := 0 */
    mov     w8, #93     /* exit is syscall #93 */
    svc     #0          /* invoke syscall */

and again to assemble it

$ aarch64-linux-gnu-as -c -o hello.o hello.s

and then link it

$ aarch64-linux-gnu-gcc -static -o hello hello.o

To run it

$ ./hello
Hello, ARM64!
$ 

That's two working examples for now. I also highly recommend Vega's ARMv8 AArch64/ARM64 Full Beginner's Assembly Tutorial

 

Check out some Bands on Bandcamp.com. Seven Times Refined by Altogether Steve and the Mercenaries, Crazy Fingers (Vancouver 1991), Flying Butt Pliers, and Hammy Ham Hands.

Proudly powered by a Text Editor, an IDE, an SFTP client, some Internet searches, and more recently help from some AI.

2025 dispelled.ca end of file.