当前位置:  技术问答>linux和unix

$$$高分求解,关于带_start函数的原程序的问题

    来源: 互联网  发布时间:2015-01-08

    本文导语:  extern "C" void _start(); void main(); #include "bloader.h" //Global Variables BAD BAD:) unsigned int oldEBP; struct boot_dir *viewableDirectory; int totalMem; char * passedParams; //end global vars void _start(int memSize, char *parms, struct boot_dir *load...

extern "C" void _start();

void main();
#include "bloader.h"

//Global Variables BAD BAD:)
unsigned int oldEBP;
struct boot_dir *viewableDirectory;
int totalMem;
char * passedParams;
//end global vars

void _start(int memSize, char *parms, struct boot_dir *loadedfiles)
{
asm("mov %%ebp, %0":"=m"(oldEBP));
viewableDirectory = loadedfiles; /*make file mem locations global*/
totalMem = memSize; /*make mem of system global*/
passedParams = parms; /*make paramaters passed to system global*/
main();
}

void main()
{
char *vidmem = (char *) 0xb8000;
vidmem[0] = 'H';
vidmem[1] = 0x7;
vidmem[2] = 'e';
vidmem[3] = 0x7;
vidmem[4] = 'l';
vidmem[5] = 0x7;
vidmem[6] = 'l';
vidmem[7] = 0x7;
vidmem[8] = 'o';
vidmem[9] = 0x7;
vidmem[10] = ' ';
vidmem[11] = 0x7;
        vidmem[12] = 'W';
        vidmem[13] = 0x7;
        vidmem[14] = 'o';
        vidmem[15] = 0x7;
        vidmem[16] = 'r';
        vidmem[17] = 0x7;
        vidmem[18] = 'l';
        vidmem[19] = 0x7;
        vidmem[20] = 'd';
        vidmem[21] = 0x7;
        vidmem[22] = ' ';
        vidmem[23] = 0x7;
vidmem[24] = 'O';
vidmem[25] = 0x7;
vidmem[26] = 'S';
vidmem[27] = 0x7;
}
以上程序是为了在裸机上(我想把这个程序编译成一个简单内核,然后用自己的BOOT.COM来启动)显示“HELLO WORLD”
我用G++ main.cc编译,出错如下
main.cc: In function 'int main(...)':
main.cc:23: declaration of C function 'int main(...)' conflicts with
main.cc:3: previous declaration 'void main ()' here
可是明明我在第3行和第23行都是声明的void main()啊,为什么呢?

|
main 是个特殊函数,他由crt0调用。并且根据其返回值确定程序的返回值。所以,估计编译器尤其是C++编译器使用了其内定的声明,可能他认为,你不会去用C++写OS的Loader。呵呵呵呵,在C编译器里,这个问题最多只是一个警告。因为用C写OS Loader得很多。:-)))))
至于用带WARNING编译的内核启动马上死机,这跟你的程序有关。估计你的程序哪里写的不对。还有,如果要自己写Loader,你最好换掉crt0。

|
把void main();删掉
把_start函数写到main函数后

    
 
 

您可能感兴趣的文章:

  • 高分求解---如何在DOS下查杀欢乐时光病毒?用哪种杀毒软件?Windows98没法进入了!
  • 简单问题,高分求解
  • 各位大侠,高分求解
  • 高分求解,一定给分!!!!
  • 高分求解jbuilder5 运行自带的jsp范例出错的问题?
  • 高分求解,不够再加
  • ################高分求解!!!!,关注有分!!!!
  • 哪里能够下载到针对InterBase的第三类的JDBC驱动程序InterClient?高分求解......
  • jsp 里面的 特殊字符“单引号”“双引号”的替换??(高分求解)
  • linux上的媒体播放(高分在线求解)
  • 调试JSP遇到的问题,高分求解
  • 高分求解:win2000访问linux
  • 高分求解 - TOMCAT中的内存泄漏问题……
  • 通讯行业里的OSS(网管)系统是什么样系统啊?干什么用的?高分求解
  • 急急急!!!高分求解linux 2.6 内核安装网卡的问题
  • 【NFS问题暴高分求解】如何知道Server端有哪些目录共享?
  • 高分求解,信号捕获
  • 三个容易bash脚本,高分求解
  • 高分求解?????一定给分
  • 高分征求答案---parse_options函数的作用是什么? iis7站长之家
  • 高分请教:怎样在Kdevelop不能够Trace构造函数?(其他函数可以Trace)
  • UNIX中的函数库?高分相送!
  • 请问高手,如何用linux操作系统里的标准c函数获取bios时间,高分!!!!
  • 寻一段时间函数的代码,高分相送
  • 高分求java.sql类库的类说明,函数及方法!
  • minix里的exec函数的源代码分析谁做过? 高分求购!
  • 高分,signa_pending()函数是什么意思?!!!
  • 请问使用syslog()函数为什么报错?高分相送!
  • 高分求助icmp_hdr()函数的问题
  • 高分求助关于jsp自定义函数的问题
  • 高分征求答案---parse_options函数的作用是什么?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 谁参加过weblogic的证书考试,是否有经验可供参考?高分高分高高分
  • 哪里有JB6下载啊,高分相送,救命
  • 高分求救!我在uclinux上运行应用程序时出现内存分配错误,不知如何解决,解决者高分!!
  • 哪里去找中文的EJB文章?高分悬赏!
  • 有jsp的upload和download 代码么,高分相报!
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 高分寻求jsp代码(网上调查系统,新闻发布系统)就这点分了
  • 高分求购做饼图、线形图的源吗?
  • 关于linu下的中文输入.(高分:300)
  • 一个简单的问题,高分求助!!!
  • 高分求购jbulider6得注册码,企业版本,个人版本都要
  • Linux远程访问的问题,高分求教:)
  • 请问哪儿有Solaris8的光盘映像文件下载???高分相赠!!!
  • 高分求“Ration Rose”&"JBuilder6.0"&"VisualCafe"
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 高分求购:linux和unix命令大全电子文档
  • 急救:关于BLOB数据类型---在线等待,高分相送!
  • 求UNIXWARE7.11的原版下载,高分相赠,在线等待!!!
  • 关于java?高分相送!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3