社区
硬件设计
帖子详情
如何读取寄存器的值?用c/c++高级语言能够实现吗
lishi_1991
2012-12-25 12:17:50
想读取这两个寄存器的值 该怎么办呢 谢谢大家了
...全文
2797
8
打赏
收藏
如何读取寄存器的值?用c/c++高级语言能够实现吗
想读取这两个寄存器的值 该怎么办呢 谢谢大家了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lr2131
2012-12-28
打赏
举报
回复
引用 7 楼 yc_first 的回复:
这个问题 和 从取CPSR中的值有区别么?
当然有区别,是CPU内部的寄存器,这个寄存器是没有地址的对于用户来说,你是不可能用C一级的代码直接得到它的值的,它不能像被外设寄存器或存储器一样被访问到,它不在你的寻址范围中,必须使用特定的汇编指令才能访问,而且对于CPSR,不同模式下的访问权限也不一样。
lr2131
2012-12-27
打赏
举报
回复
应该是可以的,如果是类似于ARM的统一编址的话,访问内存和访问寄存器的汇编指令是一模一样的,在C/C++一级都是一样的写法。但如果是X86这种独立编址的话,访问内存和访问寄存器的汇编指令是不一样的,但不确定在C/C++一级也可以采用同一种写法,没有实际搞过不敢瞎说。 就统一编址的话说,访问寄存器和访问内存是一样的,你想想访问内存是怎么访问的,给出指针是吧,也就是地址是吧。查到寄存器的实际物理地址,例如定时器的控制寄存器T0TCR,地址为0x80001000,那么对应的定义 unsigned long *p = ((volatile unsigned long *) 0xE000401C); 那么读寄存器的话unsigned long ReadValue = *p; 写寄存器的话,unsigned long WriteValue = VALUE; *p = WriteValue ; 你也可以看一下相关CPU的寄存器地址头文件中的定义格式: #define T0TCR (*((volatile unsigned long *) 0xE0004004)) T0TCR只是个宏名而已。 你就理解这底层是怎么做的。 查一下VOLT的地址,同时注意位宽,因为ARM的是32的,所以寄存器一般也是32,所以用的是unsigend long。具体到实际的CPU要对应的改改。 例如VOLT的地址为 0xA0001200,CPU位宽为8BIT,具体的如果有问题,请自己试着改改,也就哪几种方式。 那么为方便使用,宏定义: #define VOLT (*((volatile unsigned char *) 0xA0001200)) 读寄存器 unsigned char ReadValue = VOLT ; 写寄存器 unsigned char WriteValue = 0x5A; VOLT = WriteValue ;或直接点: VOLT = 0x5A;
yc_first
2012-12-27
打赏
举报
回复
这个问题 和 从取CPSR中的值有区别么?
lr2131
2012-12-27
打赏
举报
回复
忘了,这里没有考虑MMU内存映射的问题,如果有MMU内存映射的话,你试着换算一下也是一样的。另外,如果资料、文档代码里面有提供的接口或现成的例子最好,仔细参考一下。
lishi_1991
2012-12-26
打赏
举报
回复
各位大概明白你们的意思 找到寄存器地址 来读取数值!可是怎么读取数值呢 各位能贴个代码参考一下嘛!谢谢各位大牛了
woshi_ziyu
2012-12-25
打赏
举报
回复
楼主使用的是哪个芯片 直接读取寄存器地址就可以了
Binzo
2012-12-25
打赏
举报
回复
寄存器也是有IO的。有系统的,调用相应API;没有,引出相应IO(看电路图)直接读。
風輕雲淡
2012-12-25
打赏
举报
回复
寄存器有地址的
汇编
语言
入门教程大全
计算机的硬件资源是用汇编
语言
编程所必须要了解的重要内容,因为汇编
语言
允许、也 需要程序员直接使用这些硬件资源,只有这样才能编写出高效的目标代码。 在汇编
语言
中,需要访问的硬件资源主要有:CPU内部资源、存储器和I/O端口。本章将 着重讲解CPU内部
寄存器
的命名、功能及其常见的用途,还要介绍存储器的分段管理模 式、存储单元地址的表示法以及其物理地址的形成方式。 2.1
寄存器
组
寄存器
是CPU内部重要的数据存储资源,是汇编程序员能直接使用的硬件资源之一。由 于
寄存器
的存取速度比内存快,所以,在用汇编
语言
编写程序时,要尽可能充分利用寄 存器的存储功能。
寄存器
一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间 结果存入内存,再
读取
内存的操作。在
高级
语言
(如:C/
C++
语言
)中,也有定义变量为
寄存器
类型的,这就是提高
寄存器
利用率的一种可行的方法。
编程高手箴言(推荐)
梁肇新开发技术总结,
值
得借鉴 这是我在网上
能够
找到的最清晰的版本,分享给大家 目录: 第1章 程序点滴 1 1.1 程序≠软件 1 1.1.1 商业软件门槛的形成 2 1.1.2 认清自己的发展 4 1.2 高手是怎样练成的 5 1.2.1 高手成长的六个阶段 5 1.2.2 初级程序员和
高级
程序员的区别 7 1.2.3 程序员是吃青春饭的吗 9 1.3 正确的入门方法 11 1.3.1 规范的格式是入门的基础 13 1.3.2 调试的重要性 17 1.4 开放性思维 18 1.4.1 动态库的重要性 19 1.4.2 程序设计流程 20 1.4.3 保证程序可预测性 21 第2章 认识CPU 23 2.1 8位微处理器回顾 23 2.2 16位微处理器 24 2.2.1 组成结构 24 2.2.2 8086
寄存器
组成 25 2.2.3 内存的寻址 26 2.2.4 中断处理 27 2.3 32位微处理器 29 2.3.1
寄存器
组成 29 2.3.2 保护模式 32 2.3.3 80386的寻址方式 32 2.4 【实例】:在DOS实模式下
读取
4GB内存代码分析 36 2.4.1 程序的意义 37 2.4.2 程序代码 37 2.4.3 程序原理 41 2.4.4 程序中的一些解释 42 第3章 Windows运行机理 44 3.1 内核分析 44 3.1.1 运行机理 44 3.1.2 LE文件的格式 53 3.1.3 VxD的设计
实现
59 3.1.4 【实例】:CPU降温程序代码分析 65 3.2 消息的运行方式 82 3.2.1 认识消息 82 3.2.2 Windows系统中消息的运作方式 84 3.2.3 消息处理过程实例 87 3.3 GDI的结构和组成 89 3.3.1 GDI的组成 89 3.3.2 GDI和DirectDraw的关系 91 3.4 线程的机制 93 3.4.1 线程的工作方式 93 3.4.2 线程与GDI的冲突:死机的主要原因 94 3.4.3 线程的内存泄漏的主要原因 96 3.4.4 进程管理 98 3.4.5 同步机制 100 3.5 PE结构分析 103 3.5.1 PE头标 103 3.5.2 表节 113 3.5.3 PE文件引入 119 3.5.4 PE文件引出 125 3.5.5 PE文件资源 129 第4章 编程
语言
的运行机理 133 4.1 汇编的原理 133 4.1.1 指令系统 133 4.1.2 汇编与Win API的接口方法 141 4.1.3 【实例】:自定义程序的入口点 145 4.2
高级
语言
的原理 151 4.2.1 C/
C++
的原理 151 4.2.2 解释
语言
的原理 165 4.2.3 【实例】:用C
实现
简单的BASIC
语言
环境 165 4.3 C、
C++
的学习方式 187 4.3.1 从BASIC到C 187 4.3.2 C、汇编、API的关系 187 4.3.3 接口的建立方法 190 4.4 挂钩技术 201 4.4.1 Windows上C的挂钩 201 4.4.2
C++
的挂钩技术 213 第5章 代码的规范和风格 220 5.1 环境的设置 220 5.1.1 集成环境的设置 220 5.1.2 TAB
值
的设置 221 5.1.3 编译环境的设置 222 5.1.4 设置herosoft.dsm宏 224 5.2 变量定义的规范 227 5.2.1 变量的命名规则 227 5.2.2 变量定义的地方规定 228 5.2.3 变量的对齐规定 229 5.3 代码对齐方式、分块、换行的规范 230 5.4 快速的代码整理方法 232 5.5 注释的规范 233 5.6 头文件的规范 236 5.7 建议采用的一些规则 236 5.8 可灵活运用的一些规则 238 5.9 标准化代码示例 239 5.10 成对编码规则 243 5.10.1 成对编码的
实现
方法 243 5.10.2 成对编码中的几点问题 248 5.11 正确的成对编码的工程编程方法 251 5.11.1 编码前的工作 252 5.11.2 成对编码的工程方法 255 5.11.3 两个问题的解释 260 第6章 分析方法 266 6.1 分析概要 266 6.1.1 分析案例一:软件硬盘阵列 268 6.1.2 分析案例之二:游戏内存修改工具 274 6.2 接口的提炼 286 6.2.1 分离接口 286 6.2.2 参数分析 287 6.3 主干和分支 290 6.3.1 主干和分支分析举例 291 6.3.2 程序检?? 300 6.4 是否对象化 301 6.5 是否DLL化 307 6.5.1 DLL的建立和调用 307 6.5.2 DLL动态与静态加载的比较
编程高手箴言(中文完整版)(13M)
梁肇新,豪杰超级解霸的作者 “我就是程序,程序就是我。” 梁肇新 《编程高手箴言》这本书就是梁肇新自己十余年来编程经验的集结。在名人出书成为热潮的这几年中,拥有丰富经历和感悟的梁肇新却没有跟风,这本《箴言》是他的第一本著作,可谓厚积薄发。全书通篇没有时髦的IT新名词或新思想,而是踏踏实实地对很多知识进行了深刻的剖析,这有助于为编程打下坚实的根基。只有这样,才能使开发者在飞速变化的软件领域里免于雾里看花,才能更快更深地认识许多新问题、新知识,也才能更从容地应对未来之挑战。相信这本书对广大程序员大有裨益,无论是从技术角度还是从职业生涯指导角度。 本书是作者十余年编程生涯中的技术和经验的总结。内容涵盖了从认识CPU、Windows运行机理、编程
语言
的运行机理,到代码的规范和风格、分析方法、调试方法和内核优化,内有作者对许多问题的认知过程和透彻的分析,以及优秀和精彩的编程经验. 目录: 第1章 程序点滴 1 1.1 程序≠软件 1 1.1.1 商业软件门槛的形成 2 1.1.2 认清自己的发展 4 1.2 高手是怎样练成的 5 1.2.1 高手成长的六个阶段 5 1.2.2 初级程序员和
高级
程序员的区别 7 1.2.3 程序员是吃青春饭的吗 9 1.3 正确的入门方法 11 1.3.1 规范的格式是入门的基础 13 1.3.2 调试的重要性 17 1.4 开放性思维 18 1.4.1 动态库的重要性 19 1.4.2 程序设计流程 20 1.4.3 保证程序可预测性 21 第2章 认识CPU 23 2.1 8位微处理器回顾 23 2.2 16位微处理器 24 2.2.1 组成结构 24 2.2.2 8086
寄存器
组成 25 2.2.3 内存的寻址 26 2.2.4 中断处理 27 2.3 32位微处理器 29 2.3.1
寄存器
组成 29 2.3.2 保护模式 32 2.3.3 80386的寻址方式 32 2.4 【实例】:在DOS实模式下
读取
4GB内存代码分析 36 2.4.1 程序的意义 37 2.4.2 程序代码 37 2.4.3 程序原理 41 2.4.4 程序中的一些解释 42 第3章 Windows运行机理 44 3.1 内核分析 44 3.1.1 运行机理 44 3.1.2 LE文件的格式 53 3.1.3 VxD的设计
实现
59 3.1.4 【实例】:CPU降温程序代码分析 65 3.2 消息的运行方式 82 3.2.1 认识消息 82 3.2.2 Windows系统中消息的运作方式 84 3.2.3 消息处理过程实例 87 3.3 GDI的结构和组成 89 3.3.1 GDI的组成 89 3.3.2 GDI和DirectDraw的关系 91 3.4 线程的机制 93 3.4.1 线程的工作方式 93 3.4.2 线程与GDI的冲突:死机的主要原因 94 3.4.3 线程的内存泄漏的主要原因 96 3.4.4 进程管理 98 3.4.5 同步机制 100 3.5 PE结构分析 103 3.5.1 PE头标 103 3.5.2 表节 113 3.5.3 PE文件引入 119 3.5.4 PE文件引出 125 3.5.5 PE文件资源 129 第4章 编程
语言
的运行机理 133 4.1 汇编的原理 133 4.1.1 指令系统 133 4.1.2 汇编与Win API的接口方法 141 4.1.3 【实例】:自定义程序的入口点 145 4.2
高级
语言
的原理 151 4.2.1 C/
C++
的原理 151 4.2.2 解释
语言
的原理 165 4.2.3 【实例】:用C
实现
简单的BASIC
语言
环境 165 4.3 C、
C++
的学习方式 187 4.3.1 从BASIC到C 187 4.3.2 C、汇编、API的关系 187 4.3.3 接口的建立方法 190 4.4 挂钩技术 201 4.4.1 Windows上C的挂钩 201 4.4.2
C++
的挂钩技术 213 第5章 代码的规范和风格 220 5.1 环境的设置 220 5.1.1 集成环境的设置 220 5.1.2 TAB
值
的设置 221 5.1.3 编译环境的设置 222 5.1.4 设置herosoft.dsm宏 224 5.2 变量定义的规范 227 5.2.1 变量的命名规则 227 5.2.2 变量定义的地方规定 228 5.2.3 变量的对齐规定 229 5.3 代码对齐方式、分块、换行的规范 230 5.4 快速的代码整理方法 232 5.5 注释的规范 233 5.6 头文件的规范 236 5.7 建议采用的一些规则 236 5.8 可灵活运用的一些规则 238 5.9 标准化代码示例 239 5.10 成对编码规则 243 5.10.1 成对编码的
实现
方法 243 5.10.2 成对编码中的几点问题 248 5.11 正确的成对编码的工程编程方法 251 5.11.1 编码前的工作 252 5.11.2 成对编码的工程方法 255 5.11.3 两个问题的解释 260 第6章 分析方法 266 6.1 分析概要 266 6.1.1 分析案例一:软件硬盘阵列 268 6.1.2 分析案例之二:游戏内存修改工具 274 6.2 接口的提炼 286 6.2.1 分离接口 286 6.2.2 参数分析 287 6.3 主干和分支 290 6.3.1 主干和分支分析举例 291 6.3.2 程序检?? 300 6.4 是否对象化 301 6.5 是否DLL化 307 6.5.1 DLL的建立和调用 307 6.5.2 DLL动态与静态加载的比较 322 6.5.3 DLL中函数的定义 322 6.6 COM的结构 324 6.7 几种软件系统的体系结构分析 326 6.7.1 播放器的解码组成分析 326 6.7.2 豪杰大眼睛的体系结构 330 6.7.3 Windows 9x体系结构 331 第7章 调试方法 333 7.1 调试要点 333 7.1.1 调试和编程同步 333 7.1.2 汇编代码确认 334 7.1.3 Win32的Debug
实现
方法 342 7.2 基本调试实例分析 343 7.3 多线程应用的调试 350 7.4 非固定错误的调试 352 7.4.1 激活调试环境 352 7.4.2 正确区分错误的类型 356 7.4.3 常见的偶然错误 357 第8章 内核优化 358 8.1 数据类型的认识 358 8.2 X86优化编码准则 359 8.2.1 通用的X86优化技术 359 8.2.2 通用的AMD-K6处理器x86代码优化 361 8.2.3 AMD-K6处理器整数x86代码优化 364 8.3 MMX指令的优化 368 8.3.1 MMX的
寄存器
介绍 368 8.3.2 MMX的工作原理 368 8.3.3 MMX的检测 369 8.3.4 MMX指令的介绍 370 8.4 MMX的实例一:图像的淡入淡出 394 8.4.1 目的 394 8.4.2 解决方法 394 8.4.3 分析 394 8.4.4 初步
实现
395 8.4.5 MMX的优化
实现
401 8.5 MMX的实例二:MMX类的
实现
方法 407 8.5.1
实现
方法分析 407 8.5.2
实现
步骤 407 8.5.3 检测过程 410 8.5.4 总结 416
C/
C++
与汇编混合编程有什么好处?
点击蓝字关注我们1 导语当需要C/
C++
与汇编混合编程时,可以有以下两种处理策略:若汇编代码较短,则可在C/
C++
源文件中直接内嵌汇编
语言
实现
混合编程。若汇编代码较长,可以单独写成汇编文件,最后以汇编文件的形式加入项目中,通过ATPCS规定与C程序相互调用及访问。2 内嵌汇编
语言
指令用C/
C++
程序嵌入汇编程序中可以
实现
一些
高级
语言
没有的功能,提高程序执行效率。armcc编译器的内嵌汇编器支持A...
C/
C++
技术面试基础知识总结,包括
语言
、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经验、招聘、内推等信息
????关于 ????目录 ➕C/
C++
⭐️Effective ????STL 〽️数据结构 ⚡️算法 ❓Problems ????操作系统 ☁️计算机网络 ????网络编程 ????数据库 ????设计模式 ⚙️链接装载库 ????书籍 ????C/
C++
发展方向 ????复习刷题网站 ????面试题目经验 ????招聘时间岗位 ????内推 ????贡献者 ????支持赞助 ????License ➕C/
C++
const 作用 修饰变量,说明该
硬件设计
6,125
社区成员
11,292
社区内容
发帖
与我相关
我的任务
硬件设计
硬件/嵌入开发 硬件设计
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 硬件设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章