亿美短信开发实例后台代码

来源:互联网 发布:淘宝页头招牌怎么修改 编辑:程序博客网 时间:2024/05/01 13:17

The latest issue cost me for nearly 5 days or even more.

[ Issue ]
I want to write a bootloader with C language, using gcc & nasm. As known, gcc can only generate ELF format binaries. So I use objcopy to transform the file formats: from ELF to plain text binaries. But some really weird problem happened : the function offset mismatching, unexpected asm instructions...

[ How I solve the problem ]
1. I tried several different parameters for the tools, especially gcc and ld.
2. I digged into the disassembled sources of all the binaries. And then I found key.
3. I found GCC, LD & objcopy all worked OK, while the machine translated the binary by mistakes.
4. Then I searched for Internet: ELF is actually a 32-bit binary format, while bootloader(before entering Protected mode) executes under a 16-bit environment.

[ Solution ]
Before entering the Protected mode, 32-bit GNU tools cannot be used.(as86, ld86 are out of range).

[ Appendix ]
http://www.delorie.com/djgpp/16bit/gcc/
Check this site, a geek has built a 16-bit GCC, not elegantly, though :)

原创粉丝点击