全部博文(55)
发布时间:2014-03-09 17:42:10
B或BL指令引起处理器转移到“子程序名”处开始执行。两者的不同之处在于BL指令在转移到子程序执行之前,将其下一条指令的地址拷贝到R14(LR,链接寄存器)。由于BL指令保存了下条指令的地址,因此使用指令“MOV PC ,LR”即可实现子程序的返回。而B指令则无法实现子程序的返回,只能实现单纯的跳转。用户在编程.........【阅读全文】
发布时间:2014-03-09 17:41:04
深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益。1、堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用户模式和系统模式),都有各自独立的堆栈,用不同的堆栈指针来索引。这样当ARM进入异常模式的时候,程序就可.........【阅读全文】
发布时间:2014-03-09 12:43:39
结果应该同操作系统和编译器,CPU都相关。比如如果是16位机器,那么我们知道int只是用16比特数据,而float使用32比特,如果float参数和int参数都是压入同一个堆栈,那么实际上就会将float数据高16比特当成int数使用。于是输出结果通常也会比较简单,但是不会总是0,当然如果32位机器,所有参数都是用同一堆栈。而对于inte.........【阅读全文】
发布时间:2014-03-07 19:55:31
arm-linux工具的功能如下:arm-linux-addr2line 把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。 arm-linux-ar 建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了.........【阅读全文】
发布时间:2014-03-07 19:34:04
PC是程序计数器。不属于特殊功能寄存器。它存放的是下一条要取的指令的32位存储单元地址(ARM),当取完一个字节以后,PC的值会自动加一,为取在下一条指令做准备。读指令时,PC将其中的数值作为所取指令的地址输出给程序存储器R15,然后程序存储器按此地址输出指令字节,同时PC中的内容自动加1,指向下一条指令在程序存储.........【阅读全文】