免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: gussing
打印 上一主题 下一主题

最近在写一个东西:在windows上跑原生linux程序 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-09-04 16:38 |只看该作者
lz你的InterruptHandler函数(int80.c)在哪里定义?
handle.asm的_syscallHandlerPtr有赋初值吗?
还有int80.c里的这一段

  1. //判断我们想要添加的中断是否已被占用;
  2.         if(IdtEntry[0x80].OffsetLow  != 0
  3.                 || IdtEntry[0x80].OffsetHigh != 0)
  4.         {
  5.                 //IdtEntry[0x80].DPL = 3;
  6.         }
  7.         else
  8.         {
  9.                 InterlockedIncrement(&gFinishedDPC);
  10.                 return;
  11.         }
复制代码
貌似是错的——为空才是不占用,这里为空就退出了。

论坛徽章:
0
12 [报告]
发表于 2011-09-04 18:55 |只看该作者
lz你的InterruptHandler函数(int80.c)在哪里定义?
handle.asm的_syscallHandlerPtr有赋初值吗?
还有i ...
鸡丝拌面 发表于 2011-09-04 16:38


在汇编文件里,line进程启动的第一件事就是把_syscallHandlerPtr赋值
还有这个项,肯定是不为空的,微软塞了一个UnhandleXXX80在里面,所以实际上这段代码是废代码,我没整理好

论坛徽章:
0
13 [报告]
发表于 2011-09-05 14:36 |只看该作者
回复 12# gussing


    第一点你说得对,我也是这个意思,管他之前是啥,保存然后恢复就可以了,后面的module不该为之前可能的错误埋单。
    第二点关于syscallHandlerPtr的赋值问题,我看了半天终于明白了,在lineexec里调用ASM_DISPATCH_SYSCALL弄个int 0x80把handler写在ebx里传给isr。这个也算是插件法了 ,只不过为啥要用gas呢?一边masm一边at&t,难道又是多个project的拼凑?

论坛徽章:
0
14 [报告]
发表于 2011-09-05 14:46 |只看该作者
都是高手啊

论坛徽章:
2
天蝎座
日期:2014-03-28 10:18:052015年亚洲杯之乌兹别克斯坦
日期:2015-02-10 11:32:25
15 [报告]
发表于 2011-09-05 15:06 |只看该作者
太高端了,马克表示关注

论坛徽章:
0
16 [报告]
发表于 2011-09-05 16:18 |只看该作者
本帖最后由 unistd 于 2011-09-05 16:26 编辑

虽然楼主这个东西我弄不出来,但是不看好商业前景,但是可以作为一个研究项目吧、
没有人因为需要使用Linux程序而在Windows上跑Linux程序,因为直接就用Linux就行。

我想做的实际上是一个新的类似操作系统的语言开发平台。
就像Java,java不仅仅是一个平台,还可以认为它是一个操作系统、开发平台。
我希望这个语言能够和C一样处于中底层,代码效率甚至比C语言还要高,而且要抛弃头文件这样过时的东西,引入java/clr等元数据的概念,只需要引入共享库就可以在代码中使用共享库中的调用。
另外这个语言平台即提供了C标准库,POSIX一样的底层、系统库,还要提供网络、多媒体等现代应用比较多的应用层库。
使用这个语言平台,既可以开发新操作系统,数据库、驱动程序,又可以开发聊天软件、网站、播放器等。
而且必须保持足够的简洁。其实最近发现Go语言就有点类似。。。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:50:28
17 [报告]
发表于 2011-09-05 16:46 |只看该作者
LZ牛人啊。

不过用中文注释,不利于以后的协同开发啊。

论坛徽章:
0
18 [报告]
发表于 2011-09-06 00:11 |只看该作者
虽然楼主这个东西我弄不出来,但是不看好商业前景,但是可以作为一个研究项目吧、
没有人因为需要使用Linu ...
unistd 发表于 2011-09-05 16:18



    商业前景的话,确实完全没有 ,我做这个也纯粹是好玩,当时看毛德操他们组做的兼容内核,我就说反着来应该也可以,所以就开始做了

你说的这个语言平台,确实可以往这方面想想。事实上我的这个东西可以做到让windows程序调linux库,做全了后有点点虚拟机的样子。java/.net是用中间码实现平台无关,我这个直接用int 80实现平台无关,想一想如果linux上写了一个程序,直接拿到windows上就能跑(或者反过来也行),还是原生的,那世界得多美好

论坛徽章:
0
19 [报告]
发表于 2011-09-06 00:12 |只看该作者
LZ牛人啊。

不过用中文注释,不利于以后的协同开发啊。
noword2k 发表于 2011-09-05 16:46



    少数几处是,改天我全去了

论坛徽章:
0
20 [报告]
发表于 2011-09-06 00:13 |只看该作者
本帖最后由 gussing 于 2011-09-06 00:22 编辑
回复  gussing


    第一点你说得对,我也是这个意思,管他之前是啥,保存然后恢复就可以了,后面的mo ...
鸡丝拌面 发表于 2011-09-05 14:36



    因为我不知道如何用cygwin编译windows驱动。。。
另外,确实是拼凑的,我坦白承认。其中有cygwin的代码,有linux内核里扣出来的,还有glibc里扣出来的,还有一些死了很久的小开源项目。我认为这就是开源精髓,重新造轮子这事做起来虽然爽,但意义不大,能利用前人积累为何不用?所以承认这事不仅不会让我难堪,事实上,我还有点自豪来着。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP