|
|
|
|
 问一个gcc对数组处理的问题 - nibbling [ 2006-04-27 01:09 | 307 byte(s)]
 Re: 问一个gcc对数组处理的问题 - ddd [ 2006-05-01 10:06 | 52 byte(s)]
 Re: 问一个gcc对数组处理的问题 - madoldman [ 2006-04-27 12:37 | 128 byte(s)]
 Re: 问一个gcc对数组处理的问题 - ddd [ 2006-05-01 10:05 | 48 byte(s)]
 Re: 问一个gcc对数组处理的问题 - madoldman [ 2006-05-01 14:25 | 35 byte(s)]
 Re: 问一个gcc对数组处理的问题 - ddd [ 2006-05-01 16:07 | 25 byte(s)]
 Re: 问一个gcc对数组处理的问题 - nibbling [ 2006-05-02 11:35 | 255 byte(s)]
 Re: 问一个gcc对数组处理的问题 - nibbling [ 2006-04-30 15:11 | 82 byte(s)]
 Re: 问一个gcc对数组处理的问题 - EricFisher [ 2006-04-30 15:25 | 57 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
int array[3][2][16];
如果程序中有如下用法:
int * ptr;
ptr = array[2][0]+8;
gcc frontend 会通过常数折叠,将array[2][0]+8变成array+72, 也就是array+(2x2x16+8),怎么能让gcc不将8加进指针计算中去。也就是说希望先做(array+64) + 8, 而不希望将64和8一开始就合并。
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
你的意思是希望array[2][0]的值加8吗?
int * ptr;
ptr = array[2][0];
*ptr += 8;
这样不行吗?
|
|
|
----
大脑正在格式化,请稍候……99%……
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
|
没看懂(array+64) + 8是什么意思和array+72有什么区别?
|
|
----
I solemnly swear that I am up to no good
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
这么说吧,我们对前端做了一些扩充,也就是说数组的类型可以不同,根据不同的数组类型需要compiler来调整(array+64)中的常数偏移64,而 + 8是有程序员自己来调整,compiler不负责调整。所以需要将这两个offset的调整区分开来,这也是我们语言的一个要求.
|
|
|
[Original]
[Print]
[Top]
|
|
|