⑴ 向量作為表的存儲結構啥意思
指的是用一組稿羨地鍵孫拍址連凱余續的存儲單元一次存儲線性表的數據元素。由於線性表的所有數據元素均屬同一類型,所以每個元素在存儲器中佔用的空間大小相同。假設向量的第一個元素存放的地址用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會中斷向量表就好了。 這就是為什麼不設置那麼多中斷的原因了。