编程中的可变参数函数、字符串处理及安全问题解析
1. 优化GCC 4.9 ARM64的绝对值函数
以下是优化GCC 4.9 ARM64的绝对值函数代码:
my_abs:
; sign-extend input 32-bit value to X0 64-bit register:
sxtw
x0, w0
eor
x1, x0, x0, asr 63
; X1=X0^(X0>>63) (shift is arithmetical)
sub
x0, x1, x0, asr 63
; X0=X1-(X0>>63)=X0^(X0>>63)-(X0>>63)
; (all shifts are arithmetical)
ret
此代码实现了将32位输入值符号扩展到64位寄存器X0,并计算其绝对值。具体步骤如下:
1. sxtw x0, w0 :将32位输入值符号扩展到64位寄存器X0。
2. eor x1, x0, x0, asr 63 :计算 X1 = X0 ^ (X0 >> 63) ,这里的移位是算术移位。
3. sub x0, x1, x0, asr 63 :计算 X0 = X1 - (X0 >> 63) ,最终得到绝对值。
2. 可变参数函数
像 printf() 和 sc
超级会员免费看
订阅专栏 解锁全文
171万+

被折叠的 条评论
为什么被折叠?



