ppc汇编程序怎么读?
来源:互联网 发布:宏景软件 编辑:程序博客网 时间:2024/06/08 13:12
学过《微机原理》的研发人员应该不会陌生,汇编语言能够高效地与硬件打交道。嵌入式开发中,不同的微处理器结构决定了你使用的指令集,PowerPC是一些高性能运算嵌入式设备中常用的微处理器结构。
PowerPC处理器有32个通用寄存器和PC(程序计数器),LR(链接寄存器),CR(条件寄存器)等各种其它特殊寄存器。其中通用寄存器r3~r12是易失型,在调用子例程之前最好保存它们并在返回之后恢复它们,另外r1常作为栈指针,PowerPC没有栈,所以程序需要需要自己实现相关操作。
int cmp_int_num(int a, int b){ if (a>b) { return 1; } else if (a<b) { return -1; } else { return 0; }}
对上面的程序进行ppc-gcc -S编译,可以输出其汇编语言,如下面所示:
cmp_int_num: stwu 1,-32(1) ;将r1的值放入[r1-32]的内存位置 stw 31,28(1) mr 31,1 ;r31=r1 stw 3,8(31) ;将r3的值放入[r31+8]的内存位置 stw 4,12(31) ;将r4的值放入[r31+12]的内存位置,由此可以r3, r4存放的是形参 lwz 0,8(31) ;r0=[r31+8] lwz 9,12(31) ;r9=[r31+12] cmpw 7,0,9 ;比较r0和r9,并将结果存入r7 ble 7,.L2 ;如果r0<=r9,跳转至.L2位置 li 0,1 stw 0,16(31) ;[r31+16]存放的是返回值,这里为1 b .L1.L2: lwz 0,8(31) lwz 9,12(31) cmpw 7,0,9 bge 7,.L4 li 0,-1 stw 0,16(31) ;[r31+16]存放的是返回值,这里为-1 b .L1.L4: li 0,0 stw 0,16(31) ;[r31+16]存放的是返回值,这里为0.L1: lwz 3,16(31) ;取出返回值 lwz 11,0(1) lwz 31,-4(11) mr 1,11 blr ;返回LR寄存器指向的下一条指令
总结:技术是一个手段,首先搞清楚学习它的目的在于哪里,这里推荐一个积聚各种技术文档的网站:
http://www.ibm.com/developerworks/cn/
这上面的技术文档比较全,搜索相关内容即可。
- ppc汇编程序怎么读?
- PPC
- PPC ???
- 汇编程序
- 汇编程序
- 汇编程序
- 读扇区汇编程序源程序清单
- 读扇区汇编程序源程序清单
- 怎么把PID算法的汇编程序与温度控制系统的程序结合起来??
- PPC简史
- ppc快捷方式
- PPC技巧
- PPC应用
- ppc寄存器
- 电子钟-汇编程序
- 汇编程序格式
- 响铃,汇编程序
- 红绿灯汇编程序
- Ssh整合
- html js学习网站
- QTableWidget中的clicked和DoubleClicked事件
- 关于函数strtok和strtok_r的使用要点和实现原理(一)
- 框架练习 - 打通 jni | java framework | application 三层
- ppc汇编程序怎么读?
- js高级编程------------使用prototype仿java对象实现表单验证
- 利用 Flare3D 和 Stage3D 创建 3D Flash 游戏
- db2实例
- Android 对话框【Dialog】去除白色边框代码
- smartforms function module 保存在何处
- 关于lephone系统CM7 2.3.7 原生体验版修改的一些说明
- qt中定时器Timer的使用
- android幻灯片效果自定义