|
|
|
|
 关于GCC后端移植 - redriver [ 2007-01-09 11:27 | 1,045 byte(s)]
 Re: 关于GCC后端移植 - sartpoint [ 2007-01-27 14:49 | 16 byte(s)]
 Re: 关于GCC后端移植 - redriver [ 2007-02-27 21:32 | 71 byte(s)]
 Re: 关于GCC后端移植 - canopy [ 2007-02-27 22:01 | 202 byte(s)]
 Re: 关于GCC后端移植 - redriver [ 2007-02-28 19:57 | 172 byte(s)]
 Re: 关于GCC后端移植 - redriver [ 2007-02-28 20:07 | 785 byte(s)]
 Re: 关于GCC后端移植 - mingyanguo [ 2007-03-01 09:34 | 54 byte(s)]
 Re: 关于GCC后端移植 - redriver [ 2007-03-01 21:04 | 96 byte(s)]
 Re: 关于GCC后端移植 - redriver [ 2007-03-01 21:16 | 545 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
我最近在针对某个dsp移植GCC的后端。gcc internals看了几遍,rtl部分语法感觉应该没有问题。现在在写机器相关的宏,遇到一些问题:关于条件寄存器,GCC内部可以使用cc0,这样,机器真实的条件寄存器就无需暴露给GCC,所有涉及条件寄存器的设置和使用的指令,均只需使用cc0。gcc也建议针对某些平台中只有少数指令设置条件标志寄存器情形,可以将标志寄存器暴露给编译器,这样这些指令的指令模型中定义采用(reg: CC CC_REGNUM)来代替cc0,同样在使用条件寄存器的指令(分支指令),也是用(reg: CC CC_REGNUM)。但是在需要移植的DSP平台上,存在无符号和有符号比较指令,根据GCC Internals 4.1.0的13.12节(defining Jump Instructions)所述,可以在比较指令的指令模型里使用next_cc0_user函数来判断下个分支指令是否是有符号分支,从而根据这个信息来决定当前的比较指令是有符号还是无符号比较,这样做的前提是必须使用cc0,而不能使用类似reg: CC CC_REGNUM这种方式。因此,针对该DSP,我决定使用cc0。请问这样做是否合理?
另外,大体说下我对GCC md文件的理解,用rtl描述的指令模型(有名的和无名的),其主要作用是指导gcc产生rtl的insn链,然后用指令模型去匹配这些指令链,最终生成汇编。该理解是否正确?
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
看了下gcc网站上,貌似没说怎么发送maillist。。。我已经订阅了mailist,发了很多别人的mailist过来。
尝试过直接向gcc@gcc.gnu.org发邮件,用的是sohu的,但是说发不出。。。
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
sohu邮箱的反应是:
This is the Postfix program at host sohum19.sohu.com.
非常抱歉!我们无法把邮件发送到所有指定地址,如需进一步帮助,
请发送邮件到 <postmaster>,其中请包括问题的报告。
I'm sorry to have to inform you that the message returned
below could not be delivered to one or more destinations.
For further assistance, please send mail to <postmaster>
If you do so, please include this problem report. You can
delete your own text from the message returned below.
The Postfix program
<gcc@gcc.gnu.org>: host gcc.gnu.org[209.132.176.174] said: 552 spam score
exceeded threshold
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
关于CMP的问题现在已经解决了。现在已经定义完大部分指令,正在做部分优化。问下在md中定义的无名指令是否会在combine phase用到?比如arm中第二操作数,在有名的指令模板(define_expand和define_insn)中,均没有使用第二操作数,但是在一些无名的指令中使用了第二操作数,比如将一个plus的
的指令第三操作数移位,但是我觉得这个指令是无名的,也就是不会在rtl生成阶段产生这个指令,那么在后续阶段也不会用这个指令去匹配。但是在实际中发现在combie阶段(通过观察GCC的中间输出文件.combine)发觉将几条指令合并了,从而生成一个无名指令,最终匹配。问下我的理解是否正确?
|
|
|
[Original]
[Print]
[Top]
|
|
|