通用寄存器
通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。通用寄存器的长度取决于
机器字长,汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。
16位cpu通用寄存器共有 8 个:AX,BX,CX,DX,BP,SP,SI,DI.
八个寄存器都可以作为普通的
数据寄存器使用。
但有的有特殊的用途:AX为
累加器,CX为计数器,BX,BP为
基址寄存器,SI,DI为
变址寄存器,BP还可以是基指针,SP为
堆栈指针。
32位cpu通用寄存器共有 8 个: EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI功能和上面差不多
ARM通用寄存器
通用寄存器(R0-R15)可分为三类:不分组寄存器R0~R7;分组寄存器R8~R14;程序计数器PC。
1)不分组寄存器R0~R7
不分组寄存器R0~R7在所有处理器模式下,它们每一个都访问一样的32位寄存器。它们是真正的通用寄存器,没有体系结构所隐含的特殊用途。
2)分组寄存器R8~R14
分组寄存器R8~R14对应的物理寄存器取决于当前的处理器模式。若要访问特定的物理寄存器而不依赖当前的处理器模式,则要使用规定的名字。寄存器R8~R12各有两组物理寄存器:一组为FIQ模式,另一组为除了FIQ以外的所有模式。寄存器R8~R12没有任何指定的特殊用途,只是在作快速中断处理时使用。寄存器R13,R14各对应6个分组的物理寄存器,1个用于用户模式和系统模式,其它5个分别用于5种异常模式。寄存器R13通常用做堆栈指针,称为SP;寄存器R14用作子程序链接寄存器,也称为LR。
3)程序计数器PC
寄存器R15用做程序计数器(PC)。
②大概有多少资源模块?
ARM处理器共有37个寄存器:1) 31个通用寄存器,包括程序计数器(PC)。这些寄存器都是32位的; 2)6个状态寄存器。这些寄存器也是32位的,但是只使用了其中的12位。
S3C2440的片内资源大概可分13类:一,1个LCD控制器(支持STN和TFT带有触摸屏的液晶显示器);二,SDRAM控制器;三,3个通道的UART;四,4个通道的DMA;五,4个具有PWM功能的计时器和1个内部时钟;六,触摸屏接口;七,I2C总线接口;八,2个USB主机接口,1个USB设备接口;九,2个SPI接口;十,SD接口和MMC卡接口;十一,看门狗计数器;十二,117位通用I/O口和24位外部中断源;十三,8通道10位AD控制器。
ARM9主要是一ARM920T为核心,进行上述外围的扩张,使其显示出强大的能力,主要是频率上去了,能做的事情就多了,重点ARM920T的内核稳定。
③对于ARM的寻址是指的RAM吗?对ROM如何寻址?
我理解的寻址是,CPU每部寄存器对立即数的处理,对内部寄存器的处理,如果需要运算的就把中间结果或状态放到RAM中,相当于打草稿,如果是需要使用数据就进入ROM调用,相当于ROM是资料库,如果运算的结果重要就存放到RAM中相当于存档。
其实寻址非常简单,RAM和ROM或FLASH都是对应不同的设备,有不同的驱动方式,还有就是有地址顺序,采用常用的命令,写入读出到相应的地址,一切就顺理成章了。
④有时候用ADS1.2编译程序会出错,但是将编译清楚后,重新编译后,可能会报警,但不会出错,这是预编译和连接中的问题吗?
据说是编译中有个*.O文件,可执行代码的生存,是编译后连接,大概编译后生成*.O文件,然后连接处理行不通了,前面编译大概是对每个文件每个文件的处理,得到许多中间文件,然后再系统性连接处理,说以从头再来过可以解决这个编译问题。
⑤程序中static的着用?
加static 是标明此函数为静态函数,即此函数只能在本文件中使用,不允许别的文件调用此函数.函数后面的const 关键字表示,这个函数的返回值是个常量类型。这个常量类型是有限制的。 他的生存期间就是在这个类中。
⑥我们知道最终在下载到硬件的是二进制代码,那么命令、数据、地址的区别和联系是什么?
对应硬件来说,每一行代码都是都有个存储顺序,可理解为按汇编的格式先装入操作命令,再是地址或寄存器,再是数据。虽然命令、数据、地址编译到最后就是二进制代码,但是他们有顺序,而且按照对应的命令就能自动分离了。再深入研究芯片的设计就能深入掌握了。
⑦RAM,ROM和flash的区别?
可以把他们看做不同的芯片、不同的设备,都能通过IO读写数据,他们都有各自的地址空间,但是RAM设计之初就是要求速度快,不用永久保留,而ROM要求永久保留(准确的是保留有效的时间,一般百十年就废了),flash又称为闪存,和ROM一个性质,主要是价格问题,做嵌入式不用想PC机要那么大,可以做小一点价格便宜。
⑧FIQ和IRQ的区别?
在ARM中,FIQ模式是特权模式中的一种,同时也属于异常模式一类。用于高速数据传输或通道处理,在触发快速中断请求(FIQ)时进入。
FIQ和IRQ(
外部中断模式)之间有很大的区别。FIQ模式必须尽快处理,处理结束后离开这个模式;IRQ模式可以被FIQ模式中断,但IRQ不能中断FIQ模式;为使FIQ模式响应更快,FIQ模式具有更多的影子(Shadow)寄存器。FIQ模式必须禁用中断;如果一个中断例程必须重新启用中断,应使用IRQ模式而不是FIQ模式。