Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,64 @@
|
|||
.equ STDOUT, 1
|
||||
.equ SVC_WRITE, 64
|
||||
.equ SVC_EXIT, 93
|
||||
|
||||
.text
|
||||
.global _start
|
||||
|
||||
_start:
|
||||
stp x29, x30, [sp, -16]!
|
||||
mov x0, #123
|
||||
mov x1, #456
|
||||
mov x29, sp
|
||||
bl integer_compare // integer_compare(123, 456);
|
||||
mov x0, #-123
|
||||
mov x1, #-456
|
||||
bl integer_compare // integer_compare(-123, -456);
|
||||
mov x0, #123
|
||||
mov x1, #123
|
||||
bl integer_compare // integer_compare(123, 123);
|
||||
ldp x29, x30, [sp], 16
|
||||
mov x0, #0
|
||||
b _exit // exit(0);
|
||||
|
||||
// void integer_compare(long long x, long long y) - compare two signed integers and print a message
|
||||
integer_compare:
|
||||
cmp x0, x1
|
||||
mov x0, #STDOUT
|
||||
b.eq 1f
|
||||
b.gt 2f
|
||||
// x < y
|
||||
ldr x1, =msg_lt
|
||||
mov x2, #17
|
||||
b _write
|
||||
1: // x == y
|
||||
ldr x1, =msg_eq
|
||||
mov x2, #16
|
||||
b _write
|
||||
2: // x > y
|
||||
ldr x1, =msg_gt
|
||||
mov x2, #20
|
||||
b _write
|
||||
|
||||
msg_lt:
|
||||
.ascii "x is less than y\n"
|
||||
msg_eq:
|
||||
.ascii "x is equal to y\n"
|
||||
msg_gt:
|
||||
.ascii "x is greater than y\n"
|
||||
.align 4
|
||||
|
||||
//////////////// system call wrappers
|
||||
// ssize_t _write(int fd, void *buf, size_t count)
|
||||
_write:
|
||||
stp x29, x30, [sp, -16]!
|
||||
mov x8, #SVC_WRITE
|
||||
mov x29, sp
|
||||
svc #0
|
||||
ldp x29, x30, [sp], 16
|
||||
ret
|
||||
|
||||
// void _exit(int retval)
|
||||
_exit:
|
||||
mov x8, #SVC_EXIT
|
||||
svc #0
|
||||
Loading…
Add table
Add a link
Reference in a new issue