搜索 社区服务 统计排行 帮助
  • 2790阅读
  • 35回复

[无聊]解读GUNDAM RX-78 GP01操作系统源程序

楼层直达
级别: 精灵王
注册时间:
2002-08-24
在线时间:
0小时
发帖:
3671


图在上面:D

首先拜一下:C语言万岁万岁万万岁!

然后解释一下宏MK_FP的作用:
MK_FP(base, offset)以远指针的形式返回基地址为base,偏移量为offset的的内存地址。

分析此段代码:
首先令变量i等于地址MK_FP(0, 0x22 * 4 + 2)(即0x0000008A)中存储的整数值减1,然后与地址MK_FP(0, 0x2e * 4 + 2)中存储的整数值减1相比较。

如果相等,则令i等于i加地址MK_FP(i, 3)中存储的整数值再加1;否则令i等于地址MK_FP(i+1,0x2c)中存储的整数值减1。

然后取出地址MK_FP(i, 0)中存储的字符,如果它不等于'M',则程序报错后终止;否则继续。。。

结合注释来看,此段程序是用于确定数据存储区的起始内存地址。
另外因为妮娜MM当时不在状态,所以此程序可能含有不可预知的BUG。。。。:rolleyes:






其实我想说的是:怎么Zion在0079年就用上了DirectX SDK,而联邦在0083年还在用16位C语言在DOS上开发。。。。:D :D :D

历代头像 = =

Blog: http://omdeh.bit90982.net
级别: 风云使者
注册时间:
2002-12-14
在线时间:
360小时
发帖:
3140
只看该作者 1楼 发表于: 2005-09-10
我。。。。。。。OTL

六一都不给挂过,换回6年前的签名~~~~
级别: 圣骑士
注册时间:
2004-12-04
在线时间:
0小时
发帖:
1992
只看该作者 2楼 发表于: 2005-09-10
用时下的流行话说:这段代码充满了Bad Smell......
级别: 侠客
注册时间:
2003-06-09
在线时间:
0小时
发帖:
400
只看该作者 3楼 发表于: 2005-09-10
Re: [无聊]解读GUNDAM RX-78 GP01操作系统源程序
引用
最初由 中关村长! 发布


图在上面:D

首先拜一下:C语言万岁万岁万万岁!

然后解释一下宏MK_FP的作用:
MK_FP(base, offset)以远指针的形式返回基地址为base,偏移量为offset的的内存地址。

分析此段代码:
首先令变量i等于地址MK_FP(0, 0x22 * 4 + 2)(即0x0000008A)中存储的整数值减1,然后与地址MK_FP(0, 0x2e * 4 + 2)中存储的整数值减1相比较。

如果相等,则令i等于i加地址MK_FP(i, 3)中存储的整数值再加1;否则令i等于地址MK_FP(i+1,0x2c)中存储的整数值减1。

然后取出地址MK_FP(i, 0)中存储的字符,如果它不等于'M',则程序报错后终止;否则继续。。。

结合注释来看,此段程序是用于确定数据存储区的起始内存地址。
另外因为妮娜MM当时不在状态,所以此程序可能含有不可预知的BUG。。。。:rolleyes:






其实我想说的是:怎么Zion在0079年就用上了DirectX SDK,而联邦在0083年还在用16位C语言在DOS上开发。。。。:D :D :D


太强了~这个都分析出来

估计做动画的只是随便去摘抄一段源码就放上去了,想都没有想怎么会有人去看^_^。

liberty
自由只是相对,存在确是客观。
级别: 骑士
注册时间:
2003-02-21
在线时间:
5小时
发帖:
962
只看该作者 4楼 发表于: 2005-09-11
从没在16位DOS下写过那么底层的程序……

从注释看似乎是要在当前的command.com环境下的environment(环境变量?)中分配一块缓冲区?

这里:
fprintf(stderr, "XSET:memeory link broken\n");

居然还把memory拼错呀……orz....
级别: 小朋友
注册时间:
2005-02-07
在线时间:
0小时
发帖:
4286
只看该作者 5楼 发表于: 2005-09-11
PASS~

回去学学

Still a long way to go...

级别: 精灵王
注册时间:
2002-08-24
在线时间:
0小时
发帖:
3671
只看该作者 6楼 发表于: 2005-09-11
引用
最初由 RedNax 发布
从没在16位DOS下写过那么底层的程序……

从注释看似乎是要在当前的command.com环境下的environment(环境变量?)中分配一块缓冲区?

这里:
fprintf(stderr, "XSET:memeory link broken\n");

居然还把memory拼错呀……orz....



我猜是要取到DOS存放环境变量的内存首地址。

历代头像 = =

Blog: http://omdeh.bit90982.net
级别: 风云使者
注册时间:
2005-03-21
在线时间:
55小时
发帖:
9207
只看该作者 7楼 发表于: 2005-09-11
C语言真是万能啊~
我便恨那语法天杀的VB!


完蛋了,我姐控的立场动摇了!
级别: 侠客
注册时间:
2002-10-09
在线时间:
0小时
发帖:
404
只看该作者 8楼 发表于: 2005-09-11
记得08ms 也有一个战舰电脑镜头里面有directx 6 amd k6 -2 mmx 等当时电脑流行语,有兴趣的可以找一下截一下图放出来

IGO
级别: 光明使者
注册时间:
2003-05-08
在线时间:
0小时
发帖:
25663
只看该作者 9楼 发表于: 2005-09-11
Re: [无聊]解读GUNDAM RX-78 GP01操作系统源程序
引用
最初由 中关村长! 发布

其实我想说的是:怎么Zion在0079年就用上了DirectX SDK,而联邦在0083年还在用16位C语言在DOS上开发。。。。:D :D :D


难怪老窝都差点被人家端了……:D

说实话,俺倒是很想知道驾驶员在战斗中看到一句XSET:memeory link broken后停机会是什么感觉……OTL

With great power comes great opportunity to ABUSE that power.
--- Black Mage, from 8-bit theatre
(又名:被奇诺TD委员会,奇诺后宫队,奇诺同好会等) :D

还是OPERA最高啊!!!MYSTERY!!!这也能算是BLOG么?-_-b
级别: 工作组
注册时间:
2004-11-14
在线时间:
0小时
发帖:
8093
只看该作者 10楼 发表于: 2005-09-11
原来C语言这么强悍啊。。。。。

级别: 天使
注册时间:
2003-08-22
在线时间:
739小时
发帖:
43656
只看该作者 11楼 发表于: 2005-09-11
果然现在的强人越来越多了........OTL

引用
最初由 Y Y 发布


下回兄弟来BJ俺请您去粗竹签兔腿好了……
级别: 光明使者
注册时间:
2004-04-14
在线时间:
26小时
发帖:
16482
只看该作者 12楼 发表于: 2005-09-11
orz一下

级别: 风云使者
注册时间:
2003-06-18
在线时间:
6小时
发帖:
6808
只看该作者 13楼 发表于: 2005-09-11
第39行:i=*(unsigned int far *)MK_PP(0,0x22*4+2)-1;

这句没有错吗?

级别: 侠客
注册时间:
2005-07-01
在线时间:
0小时
发帖:
633
只看该作者 14楼 发表于: 2005-09-11
这贴无敌,过来膜拜OTL

MS操作OS是C语言开放平台上加DIRECTX?再次OTL

快速回复

限150 字节
上一个 下一个