ask-why 板


LINE

※ 引述《sitos (麦子)》之铭言: --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.30.84
1F:→ HuangJC:C under OS 是不行;但 C 本身倒不会不行,要换 compiler.. 11/14 01:31
2F:推 jphant:我也是这样想所以才会问要怎麽去写这个程式... 11/14 02:40
3F:→ jphant:要换成甚麽compiler才可以直接access RAM的物理位置? 11/14 02:42
和 compiler 没有关系 重点在於你的程式要能够安装在开机磁区 或是做成开机光碟之类的 让 BIOS 去呼叫你的程式 然後要自行进入 protected mode 以存取整块记忆体空间 相当於自己写一个小型的 OS
4F:推 HuangJC:下一篇有提到,OS cache 你可以避过但 H/W cache 却不好避 11/14 02:48
5F:→ HuangJC:所以不只换 Compiler,还得懂硬体配置;那已经相当於写组合 11/14 02:48
6F:→ HuangJC:语言了;用 C 不会省你多少事 11/14 02:51
因为这支测试程式本身就是个小型的 OS 所以没有所谓 OS cache 的问题 hardware cache 可以用下篇文章讲的方式去避免它的影响 而且它本身其实是可以关闭的 关不掉的是 memory buffer
7F:推 jphant:所以如果是这样说 像楼上po的那些用C写一个回圈去一个bit 11/14 05:13
8F:→ jphant:一个bit去跑的solution 还算是solution麽? 11/14 05:14
算是不好的 solution 可能侦测不到某些错误这样 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.29.108
9F:→ HuangJC:因为这种程式早就存在了,所以我假设原PO不是想要公认最省 11/14 11:05
10F:→ HuangJC:事的做法,而是类似学习,挑战.如果以这点出发,又对C情有独 11/14 11:06
11F:→ HuangJC:衷,那说实话,不见得要写OS;就是尽其所能搞懂关键就对了 11/14 11:07
12F:→ HuangJC:以我只熟C不熟组合语言来说,约略可理解这种情怀.. 11/14 11:08
13F:推 sitos:我不太确定纯 C 不加 asm 是否可能做到,我认为是不行。 11/14 13:46
14F:→ sitos:应该需要某些 machine-dependent 的动作 C 是不支援的。 11/14 13:46
15F:推 HuangJC:unix-like os 就是用 C 写的,但又避不了组合语言,人家还是 11/14 13:56
16F:→ HuangJC:尽可能的用C提高可携性,可读性;混入 asm 的部份可以用最有 11/14 13:57
17F:→ HuangJC:'效率'的方式去写(我想那不是执行效率),老实说已经让我这 11/14 13:57
18F:→ HuangJC:种人很满足了.我写单晶片都用C.. machine-dependent 有就 11/14 13:58
19F:→ HuangJC:有吧..但C已经用顺手了;当然我的程式效率不会太好. 11/14 13:59
20F:→ HuangJC:compiler 要换用 real mode 版本的,比如 VC 1.5版 11/14 14:00
21F:→ littleshan:你要测整个 physical memory 怎麽可能会用 real mode 11/14 18:19
22F:→ littleshan:real mode 只能定址到 1MB,不可能让你测完全部 11/14 18:23
23F:推 HuangJC:没错,既然你知道这个,那知道 DPMI 吧! 简单说,重点仍然在 11/15 01:35
24F:→ HuangJC:直接物理定址,而不在一定要占用 BOOT 时机;但我不否认BOOT 11/15 01:35
25F:→ HuangJC:时很容易直接存取物理位址.如果我利用任何外部硬体,比如 11/15 01:36
26F:→ HuangJC:DMA,而不用 CPU..只要我存取到某物理位址就好了;那我又可 11/15 01:37
27F:→ HuangJC:以同时测试 0x10001,0x20001,x030001 的位址(举例),为什麽 11/15 01:38
28F:→ HuangJC:呢?因为CPU一次出现一个位址没错,但不代表分开的RAM颗粒也 11/15 01:38
29F:→ HuangJC:必需轮流测..利用外部DMA我就可能玩出这把戏..记忆体刷新 11/15 01:39
30F:→ HuangJC:就有玩过这招..;我没说目前的电脑是这样,一切看硬体到底怎 11/15 01:40
31F:→ HuangJC:麽布线. 11/15 01:40
32F:推 HuangJC:所谓 real mode 版本 compiler 是指 loader 部份,接下来就 11/15 01:49
33F:→ HuangJC:和你讲的自行进入 protected mode 是一样的;我们讲同件事 11/15 01:50
34F:→ littleshan:loader 是 OS 在做的,和 compiler 有什麽关系? 11/15 13:00
35F:→ littleshan:现在一般的 PC 几乎没人在用 dos 之类的 real mode OS 11/15 13:03
36F:推 HuangJC:一般基础 RD 的确不知道其关系,但如果去翻查 data sheet就 11/15 18:00
37F:→ HuangJC:有,否则 C 是无法用来写 OS 的 11/15 18:00
38F:推 HuangJC:现在整合化 compiler 不去探讨 c compile to asm 这块,但 11/15 18:04
39F:→ HuangJC:一开始先是有这种东西,所以有些不全的资讯事实上是 asm 本 11/15 18:04
40F:→ HuangJC:身的基础.因此我也会同意'C做不到'的讲法,因为根本要对asm 11/15 18:05
41F:→ HuangJC:很熟,C是当成'产生 asm'的工具;那怎麽还有人致力於用 c 写 11/15 18:05
42F:→ HuangJC:OS 呢?挺没效率的.大概大家早就猜测电脑迟早够快不去计较 11/15 18:06
43F:→ HuangJC:倒是弄一堆工具再改用 C来写(为了可携性?)就成为另一个重 11/15 18:07
44F:→ HuangJC:点.的确 unix like 的 OS可以移植,应该是挺有收获的.. 11/15 18:07
45F:→ HuangJC:C compiler 可以置换一些 obj 以达到配合不同 loader的效 11/15 18:09
46F:→ HuangJC:果,但除了写 driver,常驻程式 这种人之外,没事不必熟这块 11/15 18:09
47F:→ HuangJC:所以我们平常也不能 compile 出 driver 来.. 11/15 18:10
48F:→ littleshan:别扯开话题,memtest 之类的程式用一般的 gcc 就可以编 11/15 20:14
49F:→ littleshan:我不认为你一定要用 VC 1.5 才能编出这种程式 11/15 20:14
50F:→ littleshan:更何况 就算你用 VC1.5 你还是要编成 32bit 程式 11/15 20:15
51F:→ littleshan: 不然根本无法定址 11/15 20:15
52F:推 HuangJC:你说的对,你回头看我说的是'比如VC1.5',而不是'一定要' 11/15 20:23
53F:→ HuangJC:基本上一个会自己思考的人,我们给建议不管有多少漏洞,他会 11/15 20:23
54F:→ HuangJC:自己补完.所以VC1.5能不能用?如果不补完我也懒得教了.. 11/15 20:23
55F:→ HuangJC:那为什麽我要扯去 1.5版呢?因为它和时下搞 DLL 之类的无关 11/15 20:24
56F:→ HuangJC:只是很快让人知道有不同的东西可运用.但要补完的还很多.. 11/15 20:25
57F:→ HuangJC:不过你讨论的态度实在不错,值得推一下;不会因为没补完的部 11/15 20:27
58F:→ HuangJC:份没讲完,且自己有正确的一整套,就直接说别人全错了 :) 11/15 20:27
59F:→ HuangJC:你那一整套都是对的,先确认;我只是在谈'想学习'的心态.. 11/15 20:27
60F:→ HuangJC:所以,我一个熟C的人,该如何一点一滴探索过来呢? 11/15 20:28
61F:→ HuangJC:既然你讲gcc,我之前想到的是,碰 linux 吧,它完全公开.. 11/15 20:29
62F:→ HuangJC:学这一段不会被微软绊手绊脚的.. 11/15 20:29
63F:→ HuangJC:'如何用C做到绝对物理定址',若这样描述,问题就快速转到必 11/15 20:31
64F:→ HuangJC:需学习硬体相关的知识,搞懂 cache怎麽关闭,搞懂暂存器,旗 11/15 20:31
65F:→ HuangJC:标如何设定. 11/15 20:31
66F:→ HuangJC:DPMI 就是以前 DOS 时代但又想存取32位元位址发展出来的 11/15 20:33
67F:→ HuangJC:简单说,它不能把程式放上去执行;但能把资料放上去存取.. 11/15 20:33
68F:→ HuangJC:它的运作原理是CPU在真实/保护模式间快速切换..很诡异 11/15 20:34
69F:→ Cayman1021:bootloader on MDR ? 11/22 15:44







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP