网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
03月31日
漏签
0
天
30天自制操作系统吧
关注:
1,381
贴子:
4,825
看贴
图片
吧主推荐
游戏
15
回复贴,共
1
页
<返回30天自制操...吧
>0< 加载中...
摆脱30天工具链的方法
只看楼主
收藏
回复
贴吧用户_QJbK4eV
找不到
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
众所周知,现在主流的操作系统编译软件是:汇编nasm,C语言gcc,少数情况会有g++等软件的参与。
但是30天自制操作系统中,使用的是nask汇编,且最终都会归到nask上。
而这是制作操作系统过程中一个很烦人的话题,因此这里统一介绍一下。
以第12天的内容harib09a为例。
送TA礼物
1楼
2022-05-22 12:26
回复
贴吧用户_QJbK4eV
找不到
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
1.IPL
首先我们需要更改ipl的内容,将ipl10.nas重命名为ipl10.asm。
然后找到“RESB 18”,把它改成“TIMES 18 DB 0”。(懒得找?查找并替换适合你哦)
对于最后的RESB 0x7dfe - $,由于nasm并不使用绝对位置而是使用相对位置,我们需要把它改成“TIMES 510 - ($ - $$) DB 0”。
对于其他的细枝末节,如INT 0x10的标准写法是INT 010h等,因为nasm仍支持INT 0x10的写法,因此不做处理。
做完以上的修改之后,对于IPL的处理就做完了。
2楼
2022-05-22 12:30
回复
收起回复
贴吧用户_QJbK4eV
找不到
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
2.asmhead
随后对于asmhead的修改不涉及太多的内容,仍然是先把asmhead.nas改名为asmhead.asm,
然后在GDT0标签下,把RESB 8改成TIMES 8 DB 0即可。
3楼
2022-05-22 12:31
回复
收起回复
贴吧用户_QJbK4eV
找不到
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
3.*.c
由于cc1是gcc的汇编器,因此对于c文件我们可以不加修改的直接使用,具体的其他内容参见后文Makefile。
4楼
2022-05-22 12:32
回复
收起回复
贴吧用户_QJbK4eV
找不到
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
4.qemu
作者提供的qemu中bug繁多,因此我们需要更新qemu,具体的上文提到的工具(gcc、nasm、qemu新版)均可在后文下载,此处不多赘述。
5楼
2022-05-22 12:33
回复
收起回复
贴吧用户_QJbK4eV
找不到
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
5.Makefile
对于Makefile的修改较多,因为gcc主要用于编写应用程序,写操作系统的话需要一长串参数,对变量的更改如下:
NASM = $(TOOLPATH)nasm.exe
GCC = $(TOOLPATH)bin/gcc.exe -m32 -I$(INCPATH) -nostdinc -nolibc -nostdlib -fno-builtin -ffreestanding -fno-stack-protector -Qn -fno-pic -fno-pie -fno-asynchronous-unwind-tables -mpreferred-stack-boundary=2 -fomit-frame-pointer -O0 -finput-charset=UTF-8 -w -c
6楼
2022-05-22 14:23
回复
收起回复
贴吧用户_QJbK4eV
找不到
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
6.naskfunc.nas
改名nasmfunc.asm
7楼
2022-05-22 14:23
回复
收起回复
贴吧用户_QJbK4eV
找不到
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
7.编译选项
对于nasmfunc.asm,编译代码如下:
nasmfunc.obj : nasmfunc.asm Makefile
$(NASM) -f win32 nasmfunc.asm -o nasmfunc.obj
一般规则修改如下:
%.obj : %.c Makefile
$(GCC) $*.c -o $*.obj
8楼
2022-05-22 14:25
回复
收起回复
贴吧用户_QJbK4eV
找不到
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
如有需要,发邮箱至2276316223@qq.com
9楼
2022-05-22 14:28
回复
收起回复
校友来访
不清晰
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
edimg有可以避免的办法吗
IP属地:四川
10楼
2022-06-05 19:43
回复(2)
收起回复
校友来访
不清晰
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
书中出现的网站有没有推荐的
IP属地:四川
11楼
2022-08-03 19:25
回复
收起回复
3141IM
扫描版
2
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
怎么制作镜像
IP属地:浙江
12楼
2023-12-30 12:29
回复
收起回复
rmwdsp
想看书
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
制作镜像可以用bximage,或者干脆用python写一个脚本,写入1474560个'\0'。
然后下载一个dd for windows,写入ipl:
dd if=ipl.bin of=a.img bs=512 count=1
写入其他文件的时候,把imgin改成a.img(这里用edimg举例):
edimg imgin:a.img copy from:haribote.sys to:
@:
imgout:a.img
写入其他文件同理。
如果需要edimg以外的文件写入方案,可以按贴里说的用fatimg,或者干脆自己写一个,FAT文件系统还算比较亲民了。
IP属地:北京
13楼
2024-01-20 20:28
回复
收起回复
3141IM
扫描版
2
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
fatimg链接:
https://gitee.com/viifo/fatimg
IP属地:浙江
14楼
2024-01-26 13:04
回复
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
甲亢哥和他的逆天翻译们
1747560
2
健美圈克里斯咋被B站封了
1678114
3
你能拿到崩铁纪念册吗
1258880
4
火影玩家怒喷海贼手游吸血
1130463
5
FPX晋级是否说明C组强度最高
885612
6
人气手办竟暗藏打工人怨念
863950
7
如何评价学者易中天入驻B站
769152
8
贴吧包打听辣评欧美女歌手
585327
9
假面骑士加布卖腐吧友直呼难绷
510598
10
美防长在硫磺岛赞扬二战日军
502026
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示