[ARM-assembly]-汇编示例:c语言翻译成汇编
2021/6/21 14:56:21
本文主要是介绍[ARM-assembly]-汇编示例:c语言翻译成汇编,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
★★★个人博客导读首页—点击此处 ★★★
示例1:
int func_test(uint32_t a, uint32_t b, uint32_t *s) { *s = a + b; return 0; } 00000000002047a0 <func_test>: 2047a0: 0b010000 add w0, w0, w1 2047a4: b9000040 str w0, [x2] 2047a8: 52800000 mov w0, #0x0 // #0 2047ac: d65f03c0 ret
示例2
int func_memcpy(void *a, void *b, uint32_t len) { memcpy(a,b,len); return 0; } int func_test(uint32_t integer1, uint32_t integer2, uint32_t *p_integer) { char a[128]; *p_integer = integer1 + integer2; func_memcpy(a,"testtesttesttesttesttest",*p_integer); return 0; } 数据段中的:"testtesttesttesttesttest" 215430: 6f697372 7325206e 6574000a 65747473 rsion %s..testte 215440: 65747473 65747473 65747473 65747473 sttesttesttestte 215450: 76007473 69737265 25206e6f 64252c64 st.version %d,%d 00000000002047a0 <func_test>: 2047a0: a9b77bfd stp x29, x30, [sp,#-144]! 2047a4: 0b010000 add w0, w0, w1 2047a8: b0000081 adrp x1, 215000 <build_message+0x2a0> 2047ac: 910003fd mov x29, sp 2047b0: b9000040 str w0, [x2] 2047b4: 9110e821 add x1, x1, #0x43a 2047b8: 2a0003e2 mov w2, w0 2047bc: 910043a0 add x0, x29, #0x10 2047c0: 94003d7d bl 213db4 <memcpy> 2047c4: 52800000 mov w0, #0x0 // #0 2047c8: a8c97bfd ldp x29, x30, [sp],#144 2047cc: d65f03c0 ret
由此看来,这是一个递减的栈.
(1)
stp x29, x30, [sp,#-144]! //sp=sp-144后,将x29和x30拷贝到sp中,即:
0到-128是数组变量a,-129到-144是 x29和x30(lr)。 这里其实就是保存x29和x30
(2)
add x0, x29, #0x10 //x29是当前的栈地址(sp),sp+0x10正好就是数组a的地址,这句就是将数组a的地址拷贝到x0中
(3)ldp x29, x30, [sp],#144 从sp处拷贝两个double-world到x29和x30,这里其实就是恢复x29和x30。 拷贝之后,再sp=sp+144
这篇关于[ARM-assembly]-汇编示例:c语言翻译成汇编的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享