汇编中调用printf:传递参数超过4个,用栈传递参数
来源:互联网 发布:java如何处理高并发 编辑:程序博客网 时间:2024/05/16 19:40
/********************* 汇编中调用printf:传递参数超过4个,用栈传递参数*****************//********************** uboot中go命令调用这个裸机程序 **************************///转载请注明原文地址:http://blog.csdn.net/oyhb_1992/article/details/77823235//函数参数传递规则:前4个参数依次放在r0-r3中传递,从第5个参数开始,通过栈来传递,被调用函数会从这些寄存器里取出参数/*裸机程序常识3 汇编中使用栈快捷指令push {r0-r, r5-r8, lr}pop {r0-r, r5-r8, lr}push压栈,pop出栈*/#define printf 0x43e11ad0 //uboot中printf函数地址.global _start_start://printf("%c 0x%x %d %s %c %d\n" , 'Y' , 0x12345678 , 98765432, "stack", 'A', 112233);共传递了6个参数mov r4 , lr //等价于push {lr}//传递后3个参数ldr r0 , =arg //依次给printf函数传递4个参数mov r1 , #'A'ldr r2 , =112233push {r0,r1,r2}//传递前4个参数ldr r0 , =fmt //依次给printf函数传递4个参数mov r1 , #'Y'ldr r2 , =0x12345678ldr r3 , =98765432mov lr , pc mov pc , =printfpop {r0,r1,r2}mov lr , r4 //等价于pop {pc} //回到ubootfmt:.asciz "%c 0x%x %d %s %c %d\n" //z表示以‘0’结尾的字符串arg: .asciz "static\n" //z表示以‘0’结尾的字符串
阅读全文
0 0
- 汇编中调用printf:传递参数超过4个,用栈传递参数
- printf()参数传递
- arm汇编函数调用参数传递规则
- 汇编参数传递
- 汇编中EBP传递参数和变量
- c++传递用...传递随意个参数
- bat 传递超过10个参数的情况
- [32位汇编系列]003 汇编中__stdcall 调用约定以及参数传递
- 调用参数的传递
- 调用者传递参数
- ARM汇编子程序参数传递
- Flex中调用和传递参数
- 继承中参数传递及调用顺序
- 关于C语言中函数调用和参数传递机制的探讨(三 .传递多个参数等)
- 关于C语言中函数调用和参数传递机制的探讨--汇编
- ibatis中传递多个参数
- ibatis中传递多个参数
- 线程中传递参数
- 循环复用原理图
- 面试OR笔试29——构建乘积数组
- Java基础之面向对象
- 启用或禁用更改块跟踪 (Changed Block Tracking, CBT)的两种方式
- 继承,虚继承
- 汇编中调用printf:传递参数超过4个,用栈传递参数
- 设计模式之桥接模式
- 深度学习笔记——卷积神经网络的概念入门
- POJ 3155 Hard Life(最大密度子图)
- python小TIPS
- Tools
- 开餐馆 动态规划 题解
- 基于Maven的Sonar安装配置
- 安卓自定义属性的使用