我正在阅读手臂手册并提出这个建议,但没有提到原因。
为什么无符号类型更快?
在 ARMv4 之前,ARM 没有对加载半字和有符号字节的本机支持。要加载有符号的字节,你必须LDRB
然后对值进行符号扩展(LSL
那就起来吧ASR
它回落)。这很痛苦所以char
is unsigned
默认情况下。
在 ARMv4 中添加了指令来处理半字和有符号值。这些新指令必须被压缩到可用的指令空间中。可用空间的限制意味着它们无法像原始指令一样灵活,原始指令能够在加载值时进行各种地址计算。
所以你可能会发现LDRSB
例如,无法将从内存中读取与地址计算结合起来,而LDRB
可以。这可能会耗费周期。有时我们可以返工short
- 操作成对的重代码ints
以避免这种情况。
我的网站上有更多信息:http://www.davespace.co.uk/arm/efficient-c-for-arm/memaccess.html http://www.davespace.co.uk/arm/efficient-c-for-arm/memaccess.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)