From 2601b8ee61315a8faac65ded8950cebf168f83c2 Mon Sep 17 00:00:00 2001 From: faissaloo Date: Mon, 25 Jul 2016 10:43:50 +0100 Subject: Faster strlen --- sh | Bin 1688 -> 1688 bytes sh.asm | 18 +++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/sh b/sh index 4257040..55db507 100755 Binary files a/sh and b/sh differ diff --git a/sh.asm b/sh.asm index 063bae1..ef147ac 100644 --- a/sh.asm +++ b/sh.asm @@ -318,15 +318,15 @@ _parse7: ; absolute path ;input: r12 (return address), r15 (buffer) ;output: r8 (length) _strlen: - xor r8, r8 - -_strlen1: - cmp byte [r8+r15], 0x0 - je _parse1 - cmp byte [r8+r15], 0xa - je _parse1 - inc r8 - jmp _strlen1 + mov r8, -17 ;We're always going to have to take 1 away because of the newline + xchg rsi, rcx ;bacup rcx, let rsi get clobbered + _strlen1: + add r8, 16 + PcmpIstrI xmm0, [r15+r8],0 + jnz _strlen1 + add r8, rcx + xchg rsi,rcx + jmp _parse1 ; input: rcx (a), r13 (b) ; output: rbx (string) -- cgit v1.2.3