arm上获取寄存器的值
来源:互联网 发布:地理探测器软件 编辑:程序博客网 时间:2024/06/05 20:53
http://blog.chinaunix.net/uid-20228521-id-1971079.html
本来说在arm上获取寄存器的值是因为需要调试一个很古怪的问题,而在自己的机器上测试的386结构的代码似乎还不如arm上对register的访问自由。大致的想了想似乎arm上得到寄存器的值很简单的样子。所以之前才说可能在arm上会比较简单。结果今天上午一试还是当头一棒,毕竟还是对arm asm不太熟悉的结果,反而是磕磕碰碰的不太顺利,不过好歹还是搞清楚了。
其间还一度对arm的设计产生的怀疑,不过最后看来看去还是发现arm asm的功能啊什么的还是很8错的,哈哈。
自己做一个能够有易于使用的,能够在arm linux平台上在kernel和user space都可用的监视寄存器值的手段,就出了一个不算完善的东东,有些东西也是复习复习,也还没有测试完善,在kernel中使用的话可能还有些需要修改的东西吧。暂时收录起来:
使用的时候可以把宏放到一个头文件里面就可以直接使用了。现在还有一点不爽的就是还需要一个特定数据类型的变量作为宏的参数传入,如果传入的数据类型长度小于所位于的平台的位数,就会产生“令人迷惑的结果”。所以使用的时候依赖于不同的平台了。对于arm,传入的参数的类型最好还是:unsigned long吧。如果定义成u32或者u64等等也行,只要和reg的长度相符合就可以了。
同样,在编译的时候加上优化的参数:-O(默认的优化级别似乎就是2,当然禁止优化就用-O0了。哈哈)。
1.如果是为了调试用的话,加上-g可能会有更好的效果。
2.似乎-finline-functions也是不太令人欢迎的选项。
嗯,大概就是这些吧,如果在kernel中使用的话,可以做成一个module,或者就是一个头文件就搞定,等下一阶段如果要调试kernel module的时候有用到再说了。
收工看书去也。
同样,在编译的时候加上优化的参数:-O(默认的优化级别似乎就是2,当然禁止优化就用-O0了。哈哈)。
1.如果是为了调试用的话,加上-g可能会有更好的效果。
2.似乎-finline-functions也是不太令人欢迎的选项。
嗯,大概就是这些吧,如果在kernel中使用的话,可以做成一个module,或者就是一个头文件就搞定,等下一阶段如果要调试kernel module的时候有用到再说了。
收工看书去也。
阅读全文
0 0
- arm上获取寄存器的值
- arm中在代码中获取寄存器的值
- ARM寄存器的定义
- ARM的FP寄存器
- ARM的FP寄存器
- ARM的FP寄存器
- Arm的寄存器
- ARM 中端口上拉寄存器作用
- ARM微处理器的寄存器结构
- linux ARM寄存器的介绍
- ARM处理器的寄存器组织
- ARM寄存器的别名+APCS
- ARM的37个寄存器
- keil c中获得arm的sp寄存器值
- 单片机上的寄存器
- 在DM355平台上如何在应用层直接控制GPIO----操作arm的寄存器
- ATPCS和内嵌汇编:arm处理器上函数调用寄存器的使用规则
- ARM寄存器
- springboot(十):邮件服务
- 3-3 构造函数的调用(高级)
- 《图解HTTP》读书笔记(2)第2章简单的HTTP协议(关键词:HTTP/)
- java位运算符总结
- java Class.getResource和ClassLoader.getResource
- arm上获取寄存器的值
- centos weedfs安装配置
- iOS const static extern
- 一个select标签数据改变,另一个select标签数据随之改变
- 深入浅出外观模式(二)
- Unable to complete the scan for annotations for web application [] due to a StackOverflowError
- Android adb 常用命令
- android集成讯飞语义听写
- NTP的配置