【不定期更新】自己踩的一些坑

希望以后别犯这些小毛病

1. 负数大于正数,输出true?

s = “asdf”, j = -1, k = s.length();
明显k大于0,但是cout<<(j>k);居然能输出true,检查了半天没发现错误,最后才发现是c++数据类型转换的规则…
负数大于正数?类型提升!

2.操作系统真象还原

2.1 硬盘和软盘配置问题

就因为bochs配置文件内一行boot:floppy没看见,让第三章完善mbr那里卡了半天。。。
正确配置文件如下:

egs:32
#模拟器的内存  

romimage:file=/home/echo/Desktop/operating_system/bochs/share/bochs/BIOS-bochs-latest
#这个是BIOS-bochs-latest的路径,可能不一样

vgaromimage:file=/home/echo/Desktop/operating_system/bochs/share/bochs/VGABIOS-lgpl-latest  
#这个是VGABIOS-lgpl-latest的路径,也可能不一样

#floppya:1_44=hd60M.img, status=inserted 
#这个是启动软盘,在当前目录下,如果不在当前目录,需要指明路径  

#boot:floppy
boot:disk
#表示从软盘启动

log:bochsout.txt  
#日志输出文件

ata0:enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path="hd60M.img", mode=flat, cylinders=121, heads=16, spt=63

2.2 bochs卡死在loader.s中

用调试命令调试半天,发现永远会卡死在loader.s的半路,而且是莫名其妙在一个地方循环一句根本没有写在源代码中的命令…最后发现tm是dd命令的时候,读取的扇区数量没改,loader.s的内容已经超过了两个扇区,也就是根本没将loader.s完全读入…
命令修改:

dd if=loader.bin of=hd60M.img bs=512 count=3 seek=2 conv=notrunc

将count改为3即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值