You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RISC-V编译器中__attribute__ ((interrupt))是否有用?编译影响探讨

针对RISC-V编译器,__attribute__ ((interrupt))是否有实际用途?

在**较新版本的RISC-V GCC编译器(GCC 10及以后)**中,这个属性是有实际作用的,并非无效。

你查阅的旧版GCC(4.7.2)文档里确实没把RISC-V列入支持interrupt属性的架构列表,但后续GCC版本已经补全了对RISC-V的支持。当你给函数加上__attribute__ ((interrupt))时,编译器会做这些关键处理:

  • 自动保存和恢复所有被调用者保存寄存器(普通函数只需要保存部分寄存器),符合RISC-V中断上下文的保护要求
  • 中断函数的结尾会用特权级返回指令(比如mret、sret)替代普通函数的ret指令,适配不同特权级的中断返回逻辑
  • 还可以通过参数指定特权级,比如__attribute__ ((interrupt("machine")))或__attribute__ ((interrupt("supervisor"))),编译器会生成对应特权级的返回代码

如果使用的是低于GCC 10的旧版RISC-V编译器,这个属性大概率会被编译器忽略,此时你需要手动编写寄存器保存、恢复以及返回指令的逻辑来实现正确的中断处理。

内容的提问来源于stack exchange,提问作者Guillaume D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:10:33