41、编程中的可变参数函数、字符串处理及安全问题解析

编程中的可变参数函数、字符串处理及安全问题解析

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值