osdev

    3热度

    2回答

    我在使用GCC和ld.I'm写作教育目的OS寻求帮助的,因为缺少我的知识的专业人士连接C代码,和我有编译问题并链接C代码。说实话,在没任何问题,但我在输出文件由GCC和LD喜欢 GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 symtab..strtab..shstrtab..text..eh_frame..data..comment .ELF..| 等

    3热度

    1回答

    引导加载程序分为2个阶段。第一阶段用汇编语言编写,只加载第二阶段,第二阶段用C语言编写。Stage1加载C语言中的代码到地址0x0500:0,然后跳转到那里。 Stage2必须编写“hello消息”并停止。 我尝试不同的方式来起始地址设置为原始二进制所作:(但没有奏效) cc -nostartfiles -nostdlib -c stage2.c ld -s -T scrptfile.ld st

    4热度

    2回答

    我在OS X上构建了一个x86_64-elf内核。我的构建系统是autotools。我成功编译的gcc为x86_64的小精灵在交叉编译在OS X当我运行从自动工具生成的配置脚本我有一个问题: configure: error: C compiler cannot create executables See `config.log' for more details 所以我看config.l

    1热度

    1回答

    我不知道这是如何为交叉编译工具链设置环境变量的正确位置。工具链的目的是开发操作系统。我正在使用Ubuntu 12.04 LTS。问题是我如何设置工具链的环境变量。交叉编译工具链的路径是 /home/Home/local 我希望能够使用GCC交叉编译工具链,但仍然能够使用与Ubuntu附带的GCC工具链。如果我不清楚,请随时问我一些问题,或者如果您需要更多关于我想达到的信息。

    2热度

    2回答

    我正在搞一些业余爱好者操作系统开发,我对存储器映射的I/O地址有点困惑。我理解整个内存映射I/O概念,但我想弄清楚开发人员如何获取地址来操作硬件。 地址是由硬件供应商指定的,还是它们是所有计算机的某种标准地址?例如,用于文本打印的VGA存储器从地址0xB8000开始。每个x86机器都是这个标准吗?如果是这样,谁来设定这个标准?例如,如果我想与以太网卡交谈,我如何知道它用于通信的地址或端口? 在此先

    4热度

    1回答

    我正在尝试为x86上的常规保护错误(GP#13)编写ISR。我无法从INTEL文档中找出如何找出导致异常的错误地址。我知道页错误例外(GP#14)cr2寄存器保存错误地址。任何帮助表示赞赏。

    3热度

    3回答

    至少在他/她的生活中至少有一次程序员,我正在尝试创建我的“革命性”,即新的,唯一的操作系统。 :D 那么,我正在使用一个虚拟仿真器(Oracle VM Virtual Box),为此我创建一个新的unknwon操作系统,并带有一个vmdk磁盘。我喜欢vmdk,因为它们只是纯文件,所以我可以将我的启动加载器粘贴到虚拟硬盘的前512个字节。 现在,我正在尝试读取此虚拟磁盘的下一个扇区,我将在该扇区上粘

    14热度

    2回答

    我正在编写一个小内核,只是为了在低层次的东西上徘徊一下。现在,它在Virtual Box中启动,我可以在屏幕上显示文本,分配一些内存以及其他非常基本的东西。它是用C++编写的,有点asm。 有一个问题我想探索的东西背后的多任务机制。据我所知,它是这样的: 内核初始化中断描述符表,使中断周期性发出(例如毫秒),并调用内核定义的程序。 当程序被调用,它可以决定设置的代码/数据段和堆栈指针的那些另一个程

    0热度

    1回答

    我一直在做操作系统开发(不是构建一个Linux内核),并且已经到了需要调试器的地步,用于我的最新操作系统。我已经尝试过Bochs(在我的Win 7分区下),但那不能识别我的USB(它没有格式化,我现在正在阅读特定的行业),我宁愿在Ubuntu 11.10下做些什么。 是否有一个调试器可以让我调试Ubuntu 11.10的自定义生成操作系统?

    2热度

    3回答

    我正在开发OS开发课的作业项目。一个任务是在中断时保存SSE寄存器的上下文。现在,保存和恢复上下文很简单(fxsave/fxsave)。但我有测试问题。我希望把相同的样本数据到寄存器中的一个,但我得到的是错误中断6.这是代码: // load some SSE registers struct Vec4 { int x, y, z, w; } vec = { 0, 1, 2, 3 }