ARM汇编:printf

本文探讨了在ARM架构下如何使用汇编语言实现printf函数。通过分析汇编代码,展示了从预编译到汇编目标文件的转换过程,详细解读了相关指令,帮助读者理解底层代码的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
int add3(int a, int b, int c)
{
	return a+b+c;
}
int main()
{
	//char* p="Hello world!";
	int a=1, b=2, c =3;
	printf("func printf: %d\n", a++);
	add3(a, b, c);
	return 0;
}


lumy1@xmws48:~/workspace/mickey/android/external/asmtest$ ~/workspace/mt6592_dev/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-objdump -D -s asmtest.o > asmtest2.asm

Contents of section .rodata.str1.4:
 0000 66756e63 20707269 6e74663a 2025640a  func printf: %d.
 0010 00000000       

Disassembly of section .text.add3:


00000000 <add3>:
   0: 1840      adds r0, r0, r1
   2: 1880      adds r0, r0, r2
   4: 4770      bx lr
   6: bf00      nop

Disassembly of section .text.startup.main:


00000000 <main>:
   0: 4803      ldr r0, [pc, #12]; (10 <main+0x10>)
   2: 2101      movs r1, #1
   4: b508      push {r3, lr}
   6: 4478      add r0, pc
   8:f7ff fffe bl0 <printf>
   c: 2000      movs r0, #0
   e: bd08      pop {r3, pc}
  10: 00000006 andeq r0, r0, r6


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值