1# output(): Hello, world.\n 2# mach(): all 3 4# This is a test for movw & movt instructions. 5# It emits hello world if movw & movt works appropriately. 6 7 .macro invalid 8# This is "undefined" but it's not properly decoded yet. 9 .word 0x07ffffff 10# This is stc which isn't recognized yet. 11 stc 0,cr0,[r0] 12 .endm 13 14 .global _start 15_start: 16# Run some simple insns to confirm the engine is at least working. 17 nop 18 19# Skip over output text. 20 21 bl skip_output 22 23hello_text: 24 .asciz "Hello, world.\n" 25 26 .p2align 2 27skip_output: 28 movw r4, #:lower16:hello_text 29 movt r4, #:upper16:hello_text 30 31output_next: 32# Output a character 33 mov r0,#3 34 mov r1,r4 35 swi #0x123456 36 37# Load next character, see if done. 38 add r4,r4,#1 39 sub r3,r3,r3 40 ldrb r5,[r4,r3] 41 teq r5,#0 42 bne output_next 43 44done: 45 mov r0,#0x18 46 ldr r1,exit_code 47 swi #0x123456 48 49# If that fails, try to die with an invalid insn. 50 invalid 51 52exit_code: 53 .word 0x20026 54