Intel
VirtualStart
; Set up a supervisor mode stack.
;
; NOTE: These values must match the OEMAddressTable and .bib file entries for
; the bootloader.
;
ldr sp, =IMAGE_BOOT_STACK_RAM_UA_START
; Jump to the C entrypoint.
;
bl main ; Jump to main.c::main(), never to return...
Samsung
VirtualStart
mov sp, #0x8C000000
add sp, sp, #0x30000 ; arbitrary initial super-page stack pointer
b main
大家都知道MOV指令后面的立即数一般是8位的,传递那么长的数据是有问题的,大家可以试试。
再看看Samsuang的,一条指令就可以搞定,它缺用了一个MOV和一个ADD,结果还容易出错,今天在编写的过程中,把0x80xxxxxx,编译就不通过,然后我每次修改虚拟内存的时候都要把每一个设计到的语句做已修改,烦死了。
然后add sp, sp, #0x30000 ; arbitrary initial super-page stack pointer,这里还是人意给一个偏移量,我的M呀,太不规范了吧。
再看看人家INTEL的注释,什么话也不用讲了
crazy_embeddedsystem_775092187 2008-6-15 03:15