| # MACRO: exit |
| .macro exit nr |
| mov \nr, d1; |
| # Trap function 1: exit(). |
| mov 1, d0; |
| syscall; |
| .endm |
| |
| # MACRO: pass |
| # Write 'pass' to stdout and quit |
| .macro pass |
| # Trap function 5: write(). |
| mov 5, d0; |
| # Use stdout. |
| mov 1, d1; |
| # Point to the string. |
| mov 1f, a0; |
| mov a0, (12, sp); |
| # Number of bytes to write. |
| mov 5, d3; |
| mov d3, (16, sp); |
| # Trigger OS trap. |
| syscall; |
| exit 0 |
| .data |
| 1: .asciz "pass\n" |
| .endm |
| |
| # MACRO: fail |
| # Write 'fail' to stdout and quit |
| .macro fail |
| # Trap function 5: write(). |
| mov 5, d0; |
| # Use stdout. |
| mov 1, d1; |
| # Point to the string. |
| mov 1f, a0; |
| mov a0, (12, sp); |
| # Number of bytes to write. |
| mov 5, d3; |
| mov d3, (16, sp); |
| # Trigger OS trap. |
| syscall; |
| exit 0 |
| .data |
| 1: .asciz "fail\n" |
| .endm |
| |
| # MACRO: start |
| # All assembler tests should start with a call to "start" |
| .macro start |
| .data |
| .global _stack |
| _stack: |
| .rept 8 |
| .long 0 |
| .endr |
| .text |
| .global _start |
| _start: |
| mov _stack, a0; |
| mov a0, sp; |
| .endm |