RTL中文版(zz)

RTL中文版(zz)

以下是本人对gcc internal的RTL的部分中文翻译,希望给指出点错误,也希望大家能够参与Machine Desc和Target Macros的翻译



11 RTL表示
编译器的大多数工作都是在一种称为寄存器传递语言(Register Transfer Language)的中间表示之上完成的。这种语言用来描述将被输出的指令,几乎是一个接一个的,通过代数形式来描述指令的功能。

RTL的灵感来自Lisp列表。它存在两种形式:一种是内部形式,通过指向其它结构的结构来表示;另一种是文本形式,用在机器描述和打印调式输出中,通过嵌套的圆括号来表示,以对应其在内部的结构。
11.1 RTL对象类型
RTL使用五种对象:表达式,整数,宽整数,字符串和向量。表达式是非常重要的一种对象。一个RTL表达式(简称为RTX)是一个C语言中的结构类型,通常用一个指针来引用;类型为typedef name rtx。

整数就是简单的int,用十进制数书写。宽整数是一种类型为HOST_WIDE_INT的整数对象,用十进制书写。

字符串是一系列的字符。在内部用C语言的char*方式表示,并且采用C的语法形式。不过,在RTL中字符串不能为空。如果在机器描述中写了一个空串,它在内部将由一个空指针表示而不是一个指向空字符的指针。在某些上下文中,这些替代字符串的空指针是有效的。在RTL代码中,字符串通常出现在 symbol_ref表达式中,但也在其它RTL表达式的上下文中出现,用于构成机器描述。

在机器描述中,字符串通常加上双引号,和在C中一样。不过,在机器描述中,字符串可以分成多行写,这在C中是非法的,并且临近的字符串常量不会像C一样被连接。字符串常量可以用圆括号围住,使得机器描述便于阅读。

字符串还有一种特殊的语法,这在当机器描述中嵌入C代码时很有用。在出现字符串的任何地方都可以加上C风格的大括号块。整个大括号块,包括最外层的一对括号,被看作字符串常量。大括号里面的双引号不作为特殊的字符。因此,如果用C代码写字符串常量时,不需要通过反斜杠对双引号进行转义操作。

向量包含多个指向表达式的指针。向量中的元素个数被显式的表现。向量的书写方式为用方括号包裹着元素,通过空格顺序隔开。长度为零的向量不会被生成,而使用空指针来代替。

表达式按表达式代码(也称作RTX码)分类。表达式代码的名字在rtl.def中定义为一个C的枚举常量(大写字母)。表达式代码及它的含义是机器独立的。RTX码可以通过宏GET_CODE(x)获取,通过宏PUT_CODE(x, newcode)修改。

表达式代码决定了表达式包含多少操作数,以及操作数是哪种对象。和LISP不一样的是,在RTL中,无法通过操作数来得知它属于哪种对象。必须通过它的上下文--包含表达式的表达式代码得知。例如,在代码subreg的表达式中,第一个操作数被作为一个表达式,第二个数被作为一个整数。在代码plus的表达式中有两个操作数,都被作为表达式。在symbol_ref表达式中有一个操作数,被作为字符串。

表达式的书写方式为一对圆括号加上表达式的类型名字,标志和机器模式,然后是表达式的操作数(用空格分隔)。

表达式代码的名字在md文件中用小写表示,在C代码中用大写表示。在本参考手册中,它们用下面的方式表示:const_int。

在一些上下文中,表达式通常会需要一个空指针,书写方式为nil。
00114.00.09.0082701108.00 A. 3 A.(11)AMDGFU(2). CKC IPSza auur sazie000 9aa8e000 9Dzie000 9000900 oo tramecht-o openxcomaliag-i w II ZZ40"102 CKCS tal . し. い . 06T14:00:09.390350+08:00 FPGA[1024]: 3 APP:FPGA COON:DF ERR [XDMA] /dev/xdma0_h2c_0, W off 0x80000000Oxfffffffffffffffff != 0x200. #012 06T14:00:09.390350+08:00 FPGA[1024]: 3 APP:FPGA COON:DF ERR [XDMA] /dev/xdma0_h2c_0, W off 0x800000000xffffffffffffffffff != 0x200.#012 06T14:00:09.390389+08:00 FPGA[1024]: 3 APP:FPGA CCN:DF ERR [XDMA] Retry WRITE data 06T14:00:09.390389+08:00 FPGA[1024]: 3 APP:FPGA CCN:DF ERR [XDMA] Retry WRITE data -06T14:00:10.414120+08:00 FPGA[1024]: 3 APP:FPCA CON:DF ERR [XIA] /dev/xdma0_h2c_0, W off 0x8000000000000, Oxffffffffff != 0x200. #012 -06T14:00:10.414120+08:00 FPGA[1024]:3 APP:FPGA CCON:DF ERR [XDMA] /dev/xdma0_h2c_0, W off 0x800000000, Oxffffffffffffffff != 0x200.#012 -06T14:00:10.414186+08:00 FPGA[1024]: 3 APP:FPGA CCON:DF ERR [XDMA] Retry WRITE data -06T14:00:10.414186+08:00 FPGA[1024]: 3 APP:FPGA CCON:DF ERR [XDMA] Retry WRITE data -06T14:00:11.438097+08:00 FPGA[1024]: 3 APP:FPGA CON:DF ERR [X]A] /dev/xdma0_h2c_0, W off 0x800000000000, oxfffffffffff != 0x200. #012 -06T14:00:11,438097+08:00 FPGA[1024]: 3 APP:FPGA CON:DFERR [XDMA] /dev/xdma0_h2c_0, W off 0x800000000000, Oxfffffffffffff != 0x200.#012 -06T14:00:11.438464+08:00 FPGA[1024]: 3 APP:FPGA CCON:DF ERR [XDMA] Retry WRITE data -06T14:00:11.438464+08:00 FPGA[1024]: 3 APP:FPGA CON:DF ERR [XDMA] Retry WRITE data -06T14:00:11.727033+08:00 X:3 X: amdgpu_scanout_send_fpga 446 init xdma buffer 2 framecnt=1 bufnum=1 pin_count=1bo domain=1#012 -06T14:00:11.798916+08:00 X: 3 X: amdgpu_scanout_send_fpga 417 init xdma buffer 1 framecnt=2 bufnum=1 pin_count=1i bo domain=1 frame_size 18e200#012 -06T14:00:12.462363+08:00 FPGA[1024]: 3 APP:FPGA CCON:DF ERR [XDMA] /dev/xdma0_h2c_0, W off 0x80000000, Oxffffffffffffffff != 0x200.#012 -06T14:00:12.462363+08:00 FPGA[1024]: 3 APP:FPGA CON:DFERR [XDMA] /dev/xdma0_h2c_0, W off 0x80000000000, oxffffffffffffff != 0x200.#012 -06T14:00:12.462420+08:00 FPGA[1024]: 3 APP:FPGA CON:DFERR [XDMA] Retry WRITE data -06T14:00:12.462420+08:00 FPGA[1024]: 3 APP:FPGA CCON:DF ERR [XDMA] Retry WRITE data -06T14:00:12.947871+08:00 X:3 X: 3 X: amdgpu_scanout_send_fpga 460 framecnt=11 CRCnow.tv_sec=8 CRCrestart. tv_sec=0#012 -06T14:00:12.948046+08:00 X: 3 X: amdgpu_scanout_send_fpga 471 open xdma succ framecnt=0 openflag=0#012 -06T14:00:13.486128+08:00 FPGA [1024]: 3 APP:FPGA CON:DFERR [XDMA] /dev/xdma0_h2c_0, W off 0x800000000000, Oxfffffffffffff != 0x200. #012 -06T14:00:13.486128+08:00 FPGA[1024]:3 APP:FPGA CCON:DF ERR [XDMA] /dev/xdma0_h2c_0, W off 0x800000000, Oxffffffffffffffff != 0x200.#012 -06T14:00:13.486183+08:00 FPGA[1024]: 3 APP:FPGA CCON:DF ERR [XDMA] Retry WRITE data -06T14:00:13.486183+08:00 FPGA[1024]: 3 APP:FPGA CON:DF ERR [XDMA] Retry WRITE data -06T14:00:13.486195+08:00 FPCA [1024]: 3 APP:FPCA CCON:DF ERR [CONFIG] Write parameter data failed! -06T14:00:13.486195+08:00 FPGA[1024]: 3 APP:FPGA CON:DFERR [CONFIG] Write parameter data failed! -06T14:00:13.486201+08:00 FPGA[1024]: 6 APP:FPGA CON:DF INFO [CONFIG] Read parameter data 0 times.
最新发布
11-09
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值