I am completely new to assembly and would like to learn arm assembly (simply because I own an m1 mac). I can't really find many ressources online, that's why I'm here. My code is as follows (file is called first.asm):
global _main
section .text
_main:
mov r7, 0x4
mov r0, 1
ldr r1, message
mov r2, 13
swi 0
.section .data
message: .ascii "Hello, World\n"
When I use
as first.asm -o hello.o
I get the following errors:
first.asm:2:1: error: invalid instruction mnemonic 'global'
global _main
^~~~~~
first.asm:3:1: error: invalid instruction mnemonic 'section'
section .text
^~~~~~~
first.asm:6:2: error: unknown use of instruction mnemonic without a size suffix
mov r7, 0x4
^
first.asm:7:2: error: unknown use of instruction mnemonic without a size suffix
mov r0, 1
^
first.asm:8:2: error: invalid instruction mnemonic 'ldr'
ldr r1, message
^~~
first.asm:9:2: error: unknown use of instruction mnemonic without a size suffix
mov r2, 13
^
first.asm:10:2: error: invalid instruction mnemonic 'swi'
swi 0
^~~
first.asm:12:15: error: unexpected token in '.section' directive
.section .data
I have a couple of questions:
- Is "as" a built-in mac compiler for assembly code?
- Do I need a different compiler?
- Does it make sense for me to learn arm assembly since I'm on an m1 mac or could I write x86 assembly without issues?