全部博文(55)
2014年(55)
发布时间: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,指向下一条指令在程序存储.........【阅读全文】
发布时间:2014-03-07 17:05:17
位置无关代码,即该段代码无论放在内存的哪个地址,都能正确运行。究其原因,是因为代码里没有使用绝对地址,都是相对地址。位置无关的写法:(1) B指令B指令接受一个相对地址,因此在汇编里用B跳转到一个标号时,实际编译的结果是一个相对跳转。相对地址有个范围限制,即目标不能太远,一般目标放在同一个文件里是.........【阅读全文】