字符串处理函数的汇编实现与优化
1. str_trim 函数分析
1.1 x64 非优化 GCC 4.9.1 实现
str_trim:
push rbp
mov rbp, rsp
sub rsp, 32
mov QWORD PTR [rbp-24], rdi
; for() first part begins here
mov rax, QWORD PTR [rbp-24]
mov rdi, rax
call strlen
mov QWORD PTR [rbp-8], rax
; str_len
; for() first part ends here
jmp .L2
; for() body begins here
.L5:
cmp BYTE PTR [rbp-9], 13
; c=='\r'?
je .L3
cmp BYTE PTR [rbp-9], 10
; c=='\n'?
jne .L4
.L3:
mov rax, QWORD PTR [rbp-8]
; str_len
lea rdx, [rax-1]
; EDX=str_len-1
mov rax, QWORD PTR [rbp-24]
; s
add rax, rdx
; RAX=s+str_len-1
mov BY