gpt4 book ai didi

gcc - 如何告诉 gcc 不要生成特定指令

转载 作者:行者123 更新时间:2023-12-02 02:58:00 25 4
gpt4 key购买 nike

我正在使用 gcc 编译一组 c 代码。我的问题是:我可以告诉 gcc 不要生成某些特定指令吗?

例如我不想让gcc生成MUL指令,怎么办?

我正在研究自己实现的 MIPS cpu 和相关代码,出于某些原因,我不希望 gcc 生成一些我没有实现的奇怪指令。看来我需要对 gcc 进行一些修改。

最佳答案

基于 Krister Walfridsson's blog , 方法可以是:

  • machine.opt 文件中添加一个命令行选项,以便创建一个全局变量。
  • machine.md 或其他文件中找到发出您要禁用的指令的指令节点。将条件更改为您添加的新变量。当不满足条件时,gcc 将发出对您将在 .c 文件或 lib 文件中提供的函数的调用。

作为一个更简单的例子,看一下 ft32 架构目录。它根据 -mnodiv 命令行选项创建一个全局变量 NODIVft32.md文件中的指令节点包含:

(define_insn "divsi3"
[(set (match_operand:SI 0 "register_operand" "=r,r")
(div:SI
(match_operand:SI 1 "register_operand" "r,r")
(match_operand:SI 2 "ft32_rimm_operand" "r,KA")))]
"!TARGET_NODIV"
"div.l %0,%1,%2")

在这个 ft32 的例子中,当变量没有设置时,gcc 发出 div.l 汇编代码。设置后,它将调用名为 __divsi3 的函数。

虽然我还没有尝试过这个。当我有机会尝试时,会更新准确的信息。

关于gcc - 如何告诉 gcc 不要生成特定指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48149147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com