首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为手臂拇指上的功能设置指令大小(16位或32位)?

如何为手臂拇指上的功能设置指令大小(16位或32位)?
EN

Stack Overflow用户
提问于 2022-04-03 08:49:51
回答 1查看 299关注 0票数 0

ARM有多个指令集: A32 (32位长指令)和混合长度T32 ( 32位或16位长指令)。T32在ArmV8之前被称为拇指。

当16位指令减少代码大小时,32位指令可以具有更高的性能。

根据https://developer.arm.com/documentation/dui0473/m/dom1359731139853https://developer.arm.com/architectures/instruction-sets,当使用混合长度指令时,可以为代码的不同部分分别定义使用的指令长度。

一些指令使用地址中最不重要的位来确定被分支到的代码是拇指代码还是ARM代码。T32指令集是作为16位指令的补充集引入的,它支持用户代码的改进代码密度。随着时间的推移,T32逐渐发展成为一个16位和32位混合长度指令集.因此,编译器可以在单个指令集中平衡性能和代码大小的权衡。

据我所知,默认的Rust来自目标(例如thumbv7m-none-eabi = T32),但是如何在Rust中强制使用每个函数的指令长度呢?

这里有一个关于如何在C:https://stackoverflow.com/a/52692271/499839上启用它的答案

EN

回答 1

Stack Overflow用户

发布于 2022-04-03 09:24:27

这可以使用不稳定的特性isa_attribute来完成。

代码语言:javascript
运行
复制
#![feature(isa_attribute)]

#[instruction_set(arm::t32)]
pub unsafe fn t32() { ... }

#[instruction_set(arm::a32)]
pub unsafe fn a32() { ... }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71724365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档