关于riscv gcc的机器描述文件${target}.md的概述

原创
10/14 15:20
阅读数 22

说明:本文主要摘选自《深入分析GCC》,阅读后做的笔记。

gcc的后端为不同的机器生成代码,关于机器描述文件(Machine Description)文件,描述了目标机器支持的每条指令模板(Instruction Pattern)。

对于insn序列中的每个insn,都会与机器描述文件中的指令模板进行匹配,如果匹配成功,则提取该指令模板中的指令输出模板,并以此生成汇编代码。

关于指令模板的构成,主要的形式

(define_insn 指令模板的名称
   RTL模板
   条件
   输出模板
   属性
)

其中指令模板的名称(Patten Name)是通过字符串给出,唯一描述该指令模板。

指令名称

根据描述,指令模板名称是指令的标识,只有命名的模板才会被GCC处理。

根据一般的命名规则都是{名称}+{机器模式}+{操作数个数},比如addsi3,表示是加法操作,机器模式为SImode,操作数为3。

RTL模板

RTL模板是一个不完整的RTX向量的形式,用来描述指令的具体形式。如果RTX向量中只有一个原始,则表示普通的模板,如果有多个元素,则表示Parallel,并行的指令模板。

在上述的图片中,set RTX的第0操作数是待定的,在0操作数的位置使用了占位符。

关于RTX中的断言

关于条件

RTX的属性在流水线优化中使用较多。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部