请高手指点:
嵌入式uClinux 中的second loader , crt0ram.S文件中(以Arcturus的uc5272为例)
#ifdef CONFIG_ROMFS_FS
/*
* Move ROM filesystem above bss :-)
*/
lea.l _sbss, %a0 /* Get start of bss */
lea.l _ebss, %a1 /* Set up destination */
move.l %a0, %a2 /* Copy of bss start */
move.l 8(%a0), %d0 /* Get size of ROMFS */
addq.l #8, %d0 /* Allow for rounding */
and.l #0xfffffffc, %d0 /* Whole words */
add.l %d0, %a0 /* Copy from end */
add.l %d0, %a1 /* Copy from end */
move.l %a1, _ramstart /* Set start of ram */
这一段是搬移romfs,请问其中addq.l #8, %d0, 这里的+8是为了4字节对齐,但为何立即数是8呢,有些人说4也可以,有些人说4不行。
请高手个给予指点,并说明原因。
谢了!