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

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 :)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值