1
0
mirror of https://github.com/ioacademy-jikim/debugging synced 2025-06-08 08:26:14 +00:00
2015-12-13 22:34:58 +09:00

59 lines
1.1 KiB
ArmAsm

# When trying (and failing) to instrument at the basic block level
# I thought up a lot of corner-cases in the rep code. This tries
# to catch some of them
# Performance counters give us 8207 insns
# 11 + 8*1024 + 3 = 8206
.globl _start
_start:
cld # we want these to happen forward
mov $0xfeb131978,%rax # value to store
# test back-to-back rep/stosb's
mov $1024,%rcx
mov $buffer1, %rdi # set destination
rep stosb # store 1024 times
rep stosb # should store 0 times
rep stosb # should store 0 times
# test stosb where cx is 0
xor %rcx,%rcx
mov $buffer1, %rdi # set destination
rep stosb # should not load at all
# test rep inside of a loop
mov $1024, %rbx
rep_loop:
mov $1024,%rcx
mov $buffer1, %rdi # set destination
rep stosb
mov $1024,%rcx
mov $buffer1, %rdi # set destination
rep stosb
dec %rbx
jnz rep_loop
#================================
# Exit
#================================
exit:
mov $60,%rax
xor %rdi,%rdi # we return 0
syscall # and exit
.bss
.lcomm buffer1, 16384