⑴ 向量作为表的存储结构啥意思
指的是用一组稿羡地键孙拍址连凯余续的存储单元一次存储线性表的数据元素。由于线性表的所有数据元素均属同一类型,所以每个元素在存储器中占用的空间大小相同。假设向量的第一个元素存放的地址用LOC(A1)表示,每个元素占用的空间大小为L个字节,则元素Ai的存放地址为:LOC(Ai)=LOC(A1)+LX(i-1)在高级语言环境中,通常利用数组来表示线性表的顺序存储结构。
⑵ 请问arm的bootloader和中断向量表是什么关系他们的存放地址是哪里上电以后是从boot
中断向量表是一个地址集合,什么样的地址呢?就是当处理器运行程序时出状况了,它就得想办法应对状况,怎么应对呢?去哪里应对呢?这个向量表就是它要去的地方,比如发生中止异常abort时,处理器就会跳到向量表中的第5个向量,也就是0x0000_0010处去执行,至于在这个地址去执行什么,程序员说了算。
而bootloader,只是一个平台初始化文件,或者说只是一个初始化程序,通常是要对处理器中的堆栈、MMU、看门狗、TLB、缓存等硬件进行一个初始设置,或者是对应用程序的所有参数(比如数据段.data全局变量.bss等)等软件环境进行一个初始设置,以便操作系统(没有操作系统时,直接执行应用程序)进行正常启动。和我们PC机的boot程序是基本相同的。
因此,中断向量表是处理器进行异常处理的一些入口地址集合,而bootloader是进行初始化的一段程序。上电以后,基本上市面上所有处理器都是从地址0x00000000处开始执行的,这个地址就是中断向量表中的复位向量了,还有,对于大部分ARM来说,向量表是不会变的,始终是在地址空间的最前端,这个不是存储在哪里,而是固化在硬件中的,但是在地址空间最前端映射的设备,却不是固定不变的,你可以将ROM、RAM及外部FLASH映射在这些地址,那么就可以把中断向量表对应的处理程序放在ROM、RAM、及FLASH中了。而bootloader,肯定是放在ROM、FLASH这些非易失性存储器中的,上电后bootloader所在的存储器肯定映射在0x00000000处,因此CPU就可以顺利找到并执行之。
⑶ 向量的存储方法的是什么
向量通常的存储方法是顺序存储,每个元素在存储中占用的空间大小相同,若第一个元素存放的位置是LOC(k1), 每个元素占用的元素大小为s,则元素ki的存放位置为:
LOC(ki)= LOC(k1)+s * (i-1)
⑷ 中断向量在机器中的存储位置是由硬件确定的,还是由软件确定的 中断向量的内
中断向量的内容是由操作系统程序确定的。向量的内容包括中断处理程序的入口地址和程序状态字(中断处理程序运行环境),中断处理程序是由操作系统装入内存的,操作系统将根据装入的实际地址和该中断处理程序的运行环境来填写中断向量。中断向量表和中断程序是放在哪里的? 中断向量表 中断向量(矢量)表也称中断指示表。中断向量表放在存储单元地址的最低部位0000H到003FFH,占有1K字节的存储空间。中断向量表分成256组(类型码),每组由两个字(即4个字节)组成一个双字长的指针。每个双字指针指示一种中断类型,最多能识别256种不同类型的中断。通过这张中断向量表产生出各个中断服务程序的入口地址。 在双字长指针的高地址中存放的字是中断服务程序入口地址所在的代码段的基址(CS),低地址字是中断服务程序入口地址相对于段基址的补偿值(IP)。CPU通过CS和IP的值得到一个20位的地址,它就是中断服务程序的实际入口地址,过程见图8-中断向量是中断处理子程序的入口地址,它放在中断向量表中,由1ch*4=70h知中断向量 存放在0000:0070处。由于中断处理入口地址为5110:2030所以0070H,0071H,0072H,0073H这四个单元的值分别为30H,20H,10H,51H。楼上说的很专业。 如果一个程序需要一个特殊的,而且256个中没有的中断的话。 那么自己写一个,然后在中断向量表中JMP到你写的中断。然后查表。是你的中断就运行了。 然后再JMP会中断向量表就好了。 这就是为什么不设置那么多中断的原因了。