帮忙分析下面程序

zzy301 2011-01-12 02:06:59
#define REG32 __IO volatile unsigned long
#define INPORT32(port) ((*(REG32 *)(port)))

这里__IO是什么目的?
REG32 * 是将指针指向的数据转换成REG32类型的意思吗?
谢谢!
...全文
93 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gladstonejay 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ganpengjin1 的回复:]

引用楼主 zzy301 的回复:
#define REG32 __IO volatile unsigned long
#define INPORT32(port) ((*(REG32 *)(port)))

这里__IO是什么目的?
REG32 * 是将指针指向的数据转换成REG32类型的意思吗?
谢谢!
是把地址为port用REG32 *转化,外面的* 表示取值
[/Quote]

受教
漫步者、 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 zzy301 的回复:]
#define REG32 __IO volatile unsigned long
#define INPORT32(port) ((*(REG32 *)(port)))

这里__IO是什么目的?
REG32 * 是将指针指向的数据转换成REG32类型的意思吗?
谢谢!
[/Quote]是把地址为port用REG32 *转化,外面的* 表示取值
gauldoth 2011-01-12
  • 打赏
  • 举报
回复
port是一个地址。
INPORT32(port),得到port地址开始的第一个unsigned long值。
volatile表示这个变量可能被操作系统,硬件,或者并行线程改变。
这样编译器生成的结果代码每次访问该变量都会重新到变量地址处取值。
__IO就不知了,不过port应该是啥硬件端口吧?

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧