常用的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设置栈。
    
    栈:满减栈,  满增栈  空减栈  空增栈

你可能感兴趣的:(常用的ARM汇编指令集与汇编调用C语言)