以下是scratch控制库中的命令,那个命令可以实现程序的无条件循环执行?

在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时的初始化,进出中断时的环境保存、恢复,对性能要求非常苛刻的函数等。


ldr  指令既可能是大范围的地址读取伪指令,也可能是内存访问指令。当它的第二个参数前面有  “ = ”  时,表示伪指令,否则表示内存访问指令。
ldr  指令是从内存中读取数据到寄存器, str  指令把寄存器的值存储到内存中,它们操作的数据都是 32

为了使C语言程序和汇编程序之间能够互相调用,必须为子程序间的调用制定规则,在ARM处理器中,这个规则被称为  ATPCS  :ARM程序和THUMB程序中子程序调用的规则。基本的ATPCS规则包括 寄存器使用规则 数据栈使用规则 参数传递规则

。如果在子程序中使用了它们的某些寄存器,子程序进入时要保存这些寄存器的值,在返回前恢复它们;对于子程序中没有使用到的寄存器,则不必进行这些操作。在THUMB程序中,通常只能使用寄存器  r4 ~ r7  来保存局部变量。
r13  不能用作其他用途。它的值在进入、退出子程序时必须相等。
寄存器  r14  称为连接寄存器,别名为  lr  。它用于保存子程序的返回地址。如果在子程序中保存了返回地址(比如将

子 程序内部调用的scratch寄存器

ARM状态局部变量寄存器8

ARM状态局部变量寄存器7、在支持数据栈检查的ATPCS中为数据栈限制指针

ARM状态局部变量寄存器6、在支持RWPIATPCS中为静态基址寄存器

ARM状态局部变量寄存器5

ARM状态局部变量寄存器4THUMB状态工作寄存器

ARM状态局部变量寄存器3

ARM状态局部变量寄存器2

ARM状态局部变量寄存器1

参数/结果/scratch寄存器4

参数/结果/scratch寄存器3

参数/结果/scratch寄存器2

参数/结果/scratch寄存器1


数据栈有两个增长方向:向内存地址减小的方向增长时,称为  DESCENDING栈  ;向内存地址增加的方向增长时,称为  ASCENDING栈 所谓数据栈的增长就是移动栈指针。当栈指针指向栈顶元素(最后一个入栈的数据)时,称为  FULL栈  ;当栈指针指向栈顶元素(最后一个入栈的数据)相邻的一个空的数据单元时,称为 

}

我要回帖

更多关于 scratch转换成可执行程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信