常用的ARM汇编指令集与汇编调用C语言

***指令与伪指令:
    指令:CPU机器指令的助记符,经过编译后得到一串10组成的机器码,可以被CPU直接读取执行。
    伪指令:编译器环境提供,用来指导编译过程,最终不会生成机器码。
    
***LDR/STR架构:
    CPU不能直接对内存的内容进行操作,必须借助CPU的特殊寄存器对内存进行加载处理。
    ldr指令将内存内容加载到通用寄存器,str将寄存器的内容加载至内存。

***指令后缀:
        常用的后缀名:
        B  功能不变,操作长度变为8位;
        H  功能不变,操作长度变为16位;
        S  功能不变,操作数变为有符号;
        S(S标志)  功能不变,影响CPSR标志位。
        
***跳转指令:
    b:直接跳转;
    bl:跳转前将返回的地址放入lr之中,以便于返回,函数的调用;

***C语言的调用:
    C语言的运行需要一定的条件,这些条件由汇编来完成。
    C语言的局部变量设置在栈上,如果C语言的局部变量落空,则程序就会跑空。
    
    在单片机程序之中,硬件为其提供了一个默认可用的栈,
    在编译器gcc中,在链接时自动会添加一个头,这个头由汇编编写,引导C语言的实现。
    
    ARM 之中有37个寄存器,每一个模式之下都有自己独立的sp寄存器。
    
    找到自己模式下的栈,系统在复位后默认进入SVC模式,先把模式设置为SVC,再直接操作SVC。
    复位之后,外部的DRAM尚未初始化,目前可用的只有内部的SRAM,因此我们从SRAM设置栈。
    
    栈:满减栈,  满增栈  空减栈  空增栈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值