vector table的size是可變的,
在ESZ裡設定,一般情況設在4 bytes就好,
可以省code size。
下面這個例子裡,每個vector佔16byte。
這個程式中,nop在compile過後變成2byte的nop,造成vector的位置錯誤。
Code:
j _start ! (0) Trap Reset
nop
nop
nop
j OS_Trap_DebugException ! (1) Trap DebugException
nop
nop
nop
j OS_Trap_GeneralException ! (2) Trap GeneralException
nop
nop
nop
這裡有2個建議,
(1) 將vector的size改成4 bytes,不需要用nop填充空間。
也可以省code size。
(2) 如果真的要用16 byte的vector,可以用下列的語法。
Code:
.align 4
exception_vector:
.align 4
j _start ! (0) Trap Reset
.align 4
j OS_Trap_DebugException ! (1) Trap DebugException
.align 4
j OS_Trap_GeneralException ! (2) Trap GeneralException
.align 4