URN Logo
UNIX Resources » Linux » China Linux Forum » CPU 与 编译器 » 4 » 问一个gcc对数组处理的问题
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
问一个gcc对数组处理的问题
问一个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)]
 
Subject: 问一个gcc对数组处理的问题
Author: nibbling    Posted: 2006-04-27 01:09    Length: 307 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]
Subject: Re: 问一个gcc对数组处理的问题
Author: madoldman    Posted: 2006-04-27 12:37    Length: 128 byte(s)
[Original] [Print] [Top]
你的意思是希望array[2][0]的值加8吗?
int * ptr;
ptr = array[2][0];
*ptr += 8;
这样不行吗?
----
大脑正在格式化,请稍候……99%……
[Original] [Print] [Top]
Subject: Re: 问一个gcc对数组处理的问题
Author: nibbling    Posted: 2006-04-30 15:11    Length: 82 byte(s)
[Original] [Print] [Top]
当然可以,只是不想对程序员作太多限制,希望由compiler来作处理。不知有没有什么好办法
[Original] [Print] [Top]
Subject: Re: 问一个gcc对数组处理的问题
Author: EricFisher    Posted: 2006-04-30 15:25    Length: 57 byte(s)
[Original] [Print] [Top]
估计相关实现是在c-parse.y中,需要改变一下该规则的action。
[Original] [Print] [Top]
Subject: Re: 问一个gcc对数组处理的问题
Author: ddd    Posted: 2006-05-01 10:05    Length: 48 byte(s)
[Original] [Print] [Top]
*ptr += 8;
说说这条语句作了件什么事情?
----
I solemnly swear that I am up to no good
[Original] [Print] [Top]
Subject: Re: 问一个gcc对数组处理的问题
Author: ddd    Posted: 2006-05-01 10:06    Length: 52 byte(s)
[Original] [Print] [Top]
没看懂(array+64) + 8是什么意思和array+72有什么区别?
----
I solemnly swear that I am up to no good
[Original] [Print] [Top]
Subject: Re: 问一个gcc对数组处理的问题
Author: madoldman    Posted: 2006-05-01 14:25    Length: 35 byte(s)
[Original] [Print] [Top]
array[2][0] += 8 阿,有什么不对吗?
----
大脑正在格式化,请稍候……99%……
[Original] [Print] [Top]
Subject: Re: 问一个gcc对数组处理的问题
Author: ddd    Posted: 2006-05-01 16:07    Length: 25 byte(s)
[Original] [Print] [Top]
array[2][0]是个lvalue么?
----
I solemnly swear that I am up to no good
[Original] [Print] [Top]
Subject: Re: 问一个gcc对数组处理的问题
Author: nibbling    Posted: 2006-05-02 11:35    Length: 255 byte(s)
[Original] [Print] [Top]
这么说吧,我们对前端做了一些扩充,也就是说数组的类型可以不同,根据不同的数组类型需要compiler来调整(array+64)中的常数偏移64,而 + 8是有程序员自己来调整,compiler不负责调整。所以需要将这两个offset的调整区分开来,这也是我们语言的一个要求.

[Original] [Print] [Top]
« Previous thread
如何生成符号表
CPU 与 编译器
4
Next thread »
在PC上远程调试arm程序是不是需要重新编译gdb啊?
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 03:47:15, cost 0.054431200027466 ms.