Andes Workshop
http://forum.andestech.com/

如何使vector table對齊16 bytes
http://forum.andestech.com/viewtopic.php?f=25&t=676
Page 1 of 1

Author:  cindy [ Fri Feb 22, 2013 6:15 pm ]
Post subject:  如何使vector table對齊16 bytes

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

Page 1 of 1 All times are UTC + 8 hours [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/