49 lines
696 B
ArmAsm
49 lines
696 B
ArmAsm
![]() |
.intel_syntax noprefix
|
||
|
|
||
|
.globl _start
|
||
|
|
||
|
.text
|
||
|
|
||
|
|
||
|
# String-copying routine.
|
||
|
# Commented-out lines would also return the starting address of the destination address.
|
||
|
strcpy:
|
||
|
# push rsi
|
||
|
.loop:
|
||
|
movb r10b, [rdi]
|
||
|
cmpb r10b, 0
|
||
|
je .end
|
||
|
movb [rsi], r10b
|
||
|
inc rdi
|
||
|
inc rsi
|
||
|
jmp .loop
|
||
|
.end:
|
||
|
# pop rax
|
||
|
ret
|
||
|
|
||
|
_start:
|
||
|
|
||
|
mov rdi, offset str2
|
||
|
mov rsi, offset str1
|
||
|
call strcpy
|
||
|
# mov rsi, rax -- would copy the string start address to rsi
|
||
|
|
||
|
mov rax, 1
|
||
|
mov rdi, 1
|
||
|
mov rsi, offset str1
|
||
|
mov rdx, 14
|
||
|
syscall
|
||
|
|
||
|
# exit
|
||
|
mov rax, 60
|
||
|
mov rdi, 0
|
||
|
syscall
|
||
|
|
||
|
.bss
|
||
|
str1:
|
||
|
.skip 30
|
||
|
|
||
|
.data
|
||
|
str2:
|
||
|
.string "Hello, world!\n"
|