搜索
bottom↓
回复: 15

关于NIOS II 数据类型的几点疑问

[复制链接]

出0入0汤圆

发表于 2010-7-22 11:29:05 | 显示全部楼层 |阅读模式
我定义的
alt_u64 x=0xaaaaaaaaaaaaaaaa;//16个a,正好64位
但是编译一下后就出错。
但是我写成:
alt_u64 x=0xaaaaaaaa;//8个a,32位
编译就正确。
我现在怀疑一个问题,就是NIOS II 是32位的处理器,他怎么可能会有64位长的数据类型?
也就是alt_types.h文件里面的:
#ifndef ALT_ASM_SRC
typedef signed char  alt_8;
typedef unsigned char  alt_u8;
typedef signed short alt_16;
typedef unsigned short alt_u16;
typedef signed long alt_32;
typedef unsigned long alt_u32;
typedef long long alt_64;
typedef unsigned long long alt_u64;
#endif
它虽然提供了alt_u64数据类型,但是在目前32位的NIOS II的核上面是不能正常使用的,也就是说,他实际上也是只有32位宽度.
不知我的猜想是否正确?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2010-7-23 14:22:39 | 显示全部楼层
??????????????????????????????????????

出0入0汤圆

发表于 2010-7-23 18:19:09 | 显示全部楼层
回复【楼主位】number007cool  
-----------------------------------------------------------------------

cpu 32位 指的寻址的位宽, 也就是 2 ^ 32 的 寻址空间, 一个地址空间 代表一个 bytes, 就是 8 bits 数据,

而软件中 的 long long int 等,是指的就是 一个数据 的 范围 和 内存储存储存 空间, 64 bits 要 8 bytes 的内存来储存,

所以32 位 cpu 和 数据的 为数无关。

出0入0汤圆

 楼主| 发表于 2010-7-23 19:48:16 | 显示全部楼层
回复   【2楼】 zzsoft

但是我在NIOS II 里面像下面定义变量时就提示出错
alt_u64 x=0xaaaaaaaaaaaaaaaa;//16个a,正好64位
也就是说,alt_64是不能够正确使用的。

出0入0汤圆

发表于 2010-7-23 19:55:14 | 显示全部楼层
报的是什么错?

出0入0汤圆

发表于 2010-7-23 20:01:39 | 显示全部楼层
你可以采用  位移 试试:

alt_u64 x=0xaaaaaaaa;

x = (x << 32 ) | 0xaaaaaaaa;

看看可以吗。

出0入0汤圆

 楼主| 发表于 2010-7-23 20:15:09 | 显示全部楼层
报错信息如下
/hello_world.c:561: warning: integer constant is too large for "long" type

出0入0汤圆

发表于 2010-7-23 20:48:30 | 显示全部楼层
这是一个 warning, 很正常。

并不是一个 error.

你可以忽视它。

几乎说有的c,c++ 编译器 都会这样 提示。

出0入0汤圆

发表于 2010-7-23 20:51:28 | 显示全部楼层
编译的时候 加 -w 试试,可以去掉 warning 信息

出0入0汤圆

 楼主| 发表于 2010-7-24 19:30:36 | 显示全部楼层
但是我实际做过测试,它的有效位确实只有32位。

出0入0汤圆

发表于 2010-7-24 23:08:21 | 显示全部楼层
回复【9楼】number007cool
-----------------------------------------------------------------------

你怎么做的测试?

出0入0汤圆

 楼主| 发表于 2010-7-25 11:44:16 | 显示全部楼层
例如令
alt_u64=0xaaaaaaaa;
然后通过移位分离出他的高32位和低32位,然后分别用发光二极管显示出来

出0入0汤圆

发表于 2010-7-25 12:15:38 | 显示全部楼层
long long x=0xaaaaaaaaaaaaaaaa;

alt_u64 ? 什么 东东?
NIOS II的C编译器特有数据类型? 看提示.此数据类型只是long而已, long默认与CPU位宽一样.

出0入0汤圆

发表于 2012-3-28 21:06:33 | 显示全部楼层
也许是为了扩展 预留的吧

出0入0汤圆

发表于 2012-6-5 10:33:54 | 显示全部楼层
0xaaaaaaaaaaaaaaaaULL

出0入0汤圆

发表于 2012-6-5 10:35:03 | 显示全部楼层
0xaaaaaaaaaaaaaaaaULL
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 09:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表