汇编语言寄存器间接寻址方法

#define GPJ0CON0xE0200240

ldr r0, =GPJ0CON //把地址值赋给寄存器r0,从后面的=可以看出用的是ldr伪指令,因为需要编译器来判断这个数

ldr r1, =0x11111111 //将设定的数暂存到寄存器r1中

str r1, [r0] //寄存器间接寻址。功能是把r1中的数写入到r0中的数为地址的内存中去

ldr(load register)指令将内存内容加载入通用寄存器。

str(store register)指令将寄存器内容存入内存空间中。

ldr/str组合用来实现 ARM CPU和内存数据交换

C语言中访问内存地址的方法

1)用指针间接访问内存

C语言中访问内存地址的方法如下片段。在ARM中(统一编址),寄存器的地址类似于内存地址(IO与内存统一编址的),所以       这里的问题是用C语言读写寄存器,就是用C语言来读写内存地址。用C语言来访问内存,就要用到指针

#define GPJ0CON0xE0200240

unsigned int *p = (unsigned int *)GPJ0CON; //注意ARM中常用无符号整型指针,(unsigned int *)是强制类型转换,让等号两边类型匹配

*p = 0x11111111; //解引用,间接改变GPJ0CON地址中存的数

可以看出,C语言间接访问内存地址的方式是通过指针间接访问。

2)C语言通过(变量名)直接内存

假如定义了一个int a;那么直接给变量名赋值a = 5;   这样的方式就直接访问量内存地址

int a;    /* 编译器帮我们申请了1个int类型的内存格子(长度是4字节,地址是确定的,但是只有

编译器知道,我们是不知道的,也不需要知道。),并且把符号a和这个格子绑定。*/

a = 5;    // 编译器发现我们要给a赋值,就会把这个值5丢到符号a绑定的那个内存格子中。

【扩展】C语言中函数:一段代码的封装。

函数名的实质:就是这一段代码的首地址。所以说函数名的本质也是一个内存地址。

【注意】内存单元格子的编址单位是字节。

linux c语言变量地址类型,C语言基础知识:访问内存地址的方法相关推荐

  1. c语言 地址类型,C语言中的地址类型

    第!!卷!第"期 #$%&!!!'$&" ! ! ! ! ! 平!原!大!学!学!报 ()*+',-)./0'12*,'*'0#3+4052 ! ! ! ! !66 ...

  2. c语言中时间类型的变量,C语言变量的类型

    C语言变量的类型 变量要有变量名,在内存中占据一定的存储单元,存储单元里存放的是该变量的值.不同类型的变量其存储单元的大小不同,变量在使用前必须定义.那么C语言变量的类型有哪些呢,一起来看看! (一) ...

  3. python程序设计语言是什么类型的语言-Python 是弱类型的语言 强类型和弱类型的语言区别...

    Python 是弱类型的语言 在强类型的编程语言中,定义变量时要指明变量的类型,而且赋值的数据也必须是相同类型的,C语言.C++.Java 是强类型语言的代表. 下面我们以 C++ 为例来演示强类型语 ...

  4. 动态语言,静态类型,强类型定义语言,弱类型定义语言,

    1 动态语言和静态语言 通常我们所说的动态语言.静态语言是指动态类型语言和静态类型语言.    1 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时 ...

  5. 编译型和解释型、动态语言和静态语言、强类型定义语言和弱类型定义语言

    一.编译型与解释型语言 我们编写程序也就是源代码基本是用高级编程语言,比如JavaScript, java, c等等,这些语言计算机是不理解的,所以需要转化(翻译)成计算机理解的机器语言,或者说目标C ...

  6. c语言中通过指针将数值赋值到制定内存地址

    1.一种直观的方法 假设现在需要往内存0x12ff7c地址上存入一个整型数0x100.我们怎么才能做到呢? 我们知道可以通过一个指针向其指向的内存地址写入数据,那么这里的内存地址0x12ff7c其本质 ...

  7. java 怎么输出地址,Java中char[]输出不是内存地址的原因详解

    前言 Java中共有八种基本数据类型:byte,int,short,long,float,double,char,boolean. 计算机中的基础数据单位是bit, 1byte=8bit. 数据类型 ...

  8. Linux中文件描述符1,linux内核中的文件描述符(一)--基础知识简介

    原标题:linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blo ...

  9. linux内核中的文件描述符(一)--基础知识简介

    linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.cs ...

最新文章

  1. 某程序员吐槽:太尴尬!四年不见的前女友来公司面试,自己还是面试官!
  2. 通过一个函数对比 mgrid以及meshgrid函数
  3. 配置错误:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的...
  4. 青龙依赖环境一键安装部署
  5. vue项目实现记住密码到cookie功能
  6. 【bzoj2423】最长公共子序列[HAOI2010](dp)
  7. 服务器损坏mysql修复_云服务器mysql数据库损坏修复mysql
  8. 因吵架总被骂,阿里程序猿一气之下发明“情侣吵架神器”
  9. 2020年短视频用户价值研究报告
  10. 第45课 蝴蝶效应-动动脑 第3题 《小学生C++趣味编程》
  11. 关于索爱MT15i连接win7——MTP USB驱动无法安装
  12. 转-Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)
  13. wordpress导入数据错误MySQL返回:#1273 – Unknown collation:’utf8mb4_unicode_ci’
  14. 金融支付-银联卡支付系统产品介绍
  15. 正则表达式前端使用手册
  16. cgb2105-day02
  17. 产品经理需要的文档汇总
  18. Python关于生日悖论分析
  19. Win7+Win8双系统安装教程!零风险超简单2
  20. Mysql语句+Linux指令一步入门

热门文章

  1. 《Linux设备驱动开发详解》学习笔记一
  2. 最简单上手的音频处理软件Cool Edit,这些操作你该知道
  3. java eml解析_javamail 收邮件 解析eml文件
  4. 详解Python中的算术乘法、数组乘法与矩阵乘法
  5. 关于举办“全国大学生大数据技能竞赛”的通知
  6. Python使用numpy计算矩阵特征值、特征向量与逆矩阵
  7. python接口自动化 一个变量 其他接口要用_python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)...
  8. C++ 面向对象与面向过程的区别与联系
  9. 各种水龙头拆卸图解_[各种水龙头拆卸图解]水龙头漏水怎么办
  10. java transient关键字_嗯?你真的会用 Java 序列化机制?