keilc51中的dataidataxdatacode详解

更新时间:2023-05-22 10:02:20 阅读: 评论:0

我的科学梦征文-考研祝福

keilc51中的dataidataxdatacode详解
2023年5月22日发(作者:流芳百世的反义词)

keilc51中的dataidataxdatacode详解

51单⽚机采⽤哈佛结构。内存空间编址有重叠。可以在不同总线(本⽂称其为总线域,简称域)上定义不同的变量。在keilc51中定义了data

idata xdata code⼏种域修饰符。这些修饰符决定了变量访问⽅式。

data:⽤mov直接访问的内部RAM

idata:⽤mov @间接访问的内部RAM

xdata:⽤movx访问的外部RAM

code:⽤movc访问的rom

这些假定以上以及类型为where。数据类型为type。

⼲货:

变量(包括指针)默认存储在data中。指针能够智能的指向所有的域。

指定变量(包括指针)在某个域时,域修饰符写在变量类型后⾯。type where value,type* where point。

想让指针只能指向某个域type where* point

指定指针的域并指定指针本⾝的存储域 type where* where point

const写在前⾯const type where* where point

声明struct类型不⽤where。定义变量时候⽤。struct变量不能跨域。

以下是⼲货来源

⼀下是实验结果

type value :data中的变量

where type value :where中的变量

type where value :where中的变量

where type where value 是的,没错,这种神经病写法也是在where中的变量

type * point data中的跨域指针,

where type * point 存储在where中的跨域指针

type * where point 存储在where中的跨域指针

where type * where point 这种更神经病的写法也是存储在where中的跨域指针

type where* point 存储在内部RAM中只能指向where的指针

where type where* point 存储在where中指向where的指针

type where* where point 存储在where中指向where的指针

很乱是吧?我们整理⼀下

聪明的同学已经发现规律了,是不是?

作为c不得不提的⼀种变量——指针。keil c51中还存在⼀个指针,这个指针实际上是sizeof(type*) + 1的。有⼀个字节来存储指针指向的

区域。访问*point时对于不同区域的数据使⽤不同的指令。也就是说这中指针可以访问所有的总线。暂且称其跨域指针。

既然指针也是变量“指向什么东西”是指针变量的类型。那么互忽略类型,把这些写法调换顺序。

发现规律了么?data,idata,xdata,code可以在类型前,也可以在类型之后,或者前后都有。

定义变量时,c类型最前⾯最着最后⾯添加(或者前后都有)总线域修饰符,可以决定该变量存储的位置。前后都不加,默认是

data。

我们在单独关⼼⼀下指针。

发现规律了么?type *是可以指向任何区域的指针。决定指针指向位置时候域修饰符必须在type和*之间。

⾄于const struct,呵呵⾃⼰试试就知道了。

匍匐的读音-一级文物

keilc51中的dataidataxdatacode详解

本文发布于:2023-05-22 10:02:19,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1684720940174828.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:keilc51中的dataidataxdatacode详解.doc

本文 PDF 下载地址:keilc51中的dataidataxdatacode详解.pdf

下一篇:返回列表
标签:xdata
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|