linux c嵌入汇编,嵌入式Linux——汇编语言,C语言基础(1)

5c8a58e5687e7ad1f52ecd38a3edacf1.png

首先,汇编语言的基础

(间歇记录您的笔记... 2018-10-11)

1. mov指令

f841ea9a3691b407537f68a684aebff6.png

基本用法: mov r0,#0

mov指令是分配指令. 用法如上. 将立即值0放入寄存器r0.

2. bl命令

f2e87833f64465a826f0b986ce7cbdbf.png

bl是一个跳转指令,1)跳转到某个位置执行可以是汇编语言中的标签或c文件中的函数. 2)将返回地址保存到lr寄存器中,该返回地址为下一条指令的地址

3.ldm和stm

这两个与ldr和str不同. ldm和stm可以一次操作多个寄存器或存储器多次. 我尚未编写此代码,但是我已经在反汇编文件中看到了它,例如,我已经学到了以下代码:

20_kab7bokdv3r2772odk3b2kjq.jpg

ldmia sp, {fp,sp,pc}

...

stmdb sp!, {fp,ip,lr,pc}

ia和db将完成操作,然后增加地址,然后再减小地址c语言对应汇编语句,然后完成操作. 第二,首先减少存在,然后将fp,ip,lr,pc寄存器压入堆栈. 这些寄存器是按顺序排列的. 根据标记为R的标签,高标签具有高地址. sp后面! sp的最后一个值是修改后的值. 该指令: sp首先递减,然后保存pc(R15);然后递减,然后保存lr .........

4.ldr和str

1d112269f5e0b12e13bc092443a02238.png

ldr将读取寄存器. 它也可以像mov一样使用. 当操作数太大时,不能使用mov. 必须使用ldr,因为mov不能操作特别大的数字(超出范围),伪指令ldr可以,伪指令不是真正的汇编指令. 在编译过程中,他将被分解成几个实际的组装指令以完成工作. 一次只操作一个寄存器或一次操作存储器

str是一个写寄存器. 用法如下: 将数字0x12345678放入寄存器r0c语言对应汇编语句,然后将此数字写入r1大手指的地址.

ldr r0, =0x12345678str r0, [r1]

第二,C语言的基础

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-249651-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值