0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

又一位纯手工打造CPU的牛人 汇编语言实现类Unix系统!

GReq_mcu168 来源:安富莱电子 作者:安富莱电子 2021-03-18 11:00 次阅读

硬件设计

GR8CPU是在面包板上构建功能齐全的计算机。第一个版本GR8CPU Rev2拥有600多条电线,74个集成电路和79个LED灯。它是一个8位架构,考虑了简单性和处理能力。CPU可以访问256字节的RAM,已经为其编写了功能齐全的Tic-Tac-Toe游戏。

到目前为止,正在构建第二个GR8CPU Rev3。有很多有趣的工作要做:具有65536字节的内存,改进的算法和设计更高的速度,该CPU是有史以来最复杂的面包板CPU。

最早效果:

RAM模块已完成:

设计ALU:

完成ALU设计:

视频卡设计:

完成视频输出电路:

类Unix系统设计

GR8NIX是受Unix启发的操作系统,Unix是1970年代发布的简单多用户,多任务的操作系统。基于unix的思想的现代操作系统包括Linux, MacOS和Android等。GR8CPU Rev3用汇编语言编写,内核由2000行汇编实现,5KB代码:

(1)多线程支持32个并发线程。

(2)理论上不受限制的运行程序数量。

(3)动态内存分配,当前大小最大为8 KB。

(4)真正的程序执行与位置无关(动态应用程序加载)。

但是,GR8NIX并不完美,由于硬件限制,GR8NIX无法:

(1)保护内存免受进程侵害。

(2)从尝试运行无效指令中恢复。

(3)可靠地防止进程退出后发生内存泄漏。

实现了动态内存管理后,开始文件系统的制作,实现从磁盘中加载文件:

在视频展示中,大家可以看到gr8nix变得栩栩如生,它成功加载并运行了一个Shell程序,该程序又加载并运行了大家想要的任何其他程序。

首先,Exec负责加载程序并运行它们。Exec首先进行一些完整性检查:文件是否存在?它是程序文件吗?这是有效的吗?接下来,Exec通过检查每个条目并将其偏移量添加到其长度中来查找可执行文件的长度。Exec找到的长度是这些计算出的最大长度。

此后,Exec调用thread_launch,这是一种用于准备启动线程的方法。Exec通过向过程中添加一些原始数据来完成:用户ID,指向分配的内存指针,运行的命令行以及工作目录等等。

编辑:jq


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23272

    浏览量

    660784
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10860

    浏览量

    211722
  • ALU
    ALU
    +关注

    关注

    0

    文章

    33

    浏览量

    13100

原文标题:厉害了!又一位纯手工打造CPU的牛人,并且汇编语言实现类Unix系统,支持文件系统

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    TMS320C6000汇编语言工具 v8.3.x

    电子发烧友网站提供《TMS320C6000汇编语言工具 v8.3.x.pdf》资料免费下载
    发表于 11-07 10:00 0次下载
    TMS320C6000<b class='flag-5'>汇编语言</b>工具 v8.3.x

    ARM汇编语言工具

    电子发烧友网站提供《ARM汇编语言工具.pdf》资料免费下载
    发表于 11-06 09:12 0次下载
    ARM<b class='flag-5'>汇编语言</b>工具

    TMS320C28x汇编语言工具

    电子发烧友网站提供《TMS320C28x汇编语言工具.pdf》资料免费下载
    发表于 11-01 09:32 0次下载
    TMS320C28x<b class='flag-5'>汇编语言</b>工具

    RISC-V汇编语言

    、导言 从 C 程序翻译成为可以在计算机上执行的机器语言程序的四个经典步骤。这章的内容包括了后三个步骤,不过我们要从汇编语言在 RISC-V 函数调用规范中的作用开始说起。 上图从
    发表于 08-19 18:07

    如何用C语言实现高效查找(二分法)

    今天给分享下使用C语言实现二分算法,主要包含以下几部分内容:二分查找算法介绍二分查找算法使用场景二分查找算法代码实现二分查找算法实现过程用C语言实
    的头像 发表于 06-04 08:04 1132次阅读
    如何用C<b class='flag-5'>语言实现</b>高效查找(二分法)

    使用C语言实现的CRC计算单元的例子

    使用C语言实现的CRC计算单元的例子
    的头像 发表于 05-16 16:16 982次阅读

    寻找一位编程员

    寻找一位编程员。请法邮件 j_helmut@163.com
    发表于 04-02 13:34

    请问在STM32CubeIDE下如何嵌入汇编语言代码?

    在STM32CubeIDE下如何嵌入汇编语言代码??
    发表于 03-25 06:56

    C语言实现Web参数传递

    电子发烧友网站提供《C语言实现Web参数传递.docx》资料免费下载
    发表于 03-24 09:14 2次下载

    计算机最核心的——CPU

    CPU的四个结构中,寄存器的重要性远远高于其余三个,为什么这么说?因为程序通常是把寄存器作为对象来进行描述的。而说到寄存器,就不得不说到汇编语言,说到汇编语言,就不得不说到高级语言
    发表于 03-13 14:04 1928次阅读
    计算机最核心的——<b class='flag-5'>CPU</b>

    【RISC-V开放架构设计之道|阅读体验】汇编语言和扩展指令集

    【RISC-V开放架构设计之道|阅读体验】汇编语言和扩展指令集 汇编语言 将C语言翻译成可执行的机器语言的重要步骤包括编译过程,汇编过程,链
    发表于 02-03 13:29

    汽车ECU编程是单片机C语言还是汇编语言

    汽车ECU编程是单片机C语言吗?还是汇编语言
    发表于 01-26 06:08

    C语言能够实现单片机功能,为什么还要使用汇编呢?

    C语言能够实现单片机功能,为什么还要使用汇编呢? C语言种高级编程语言,它具有跨平台、可移植
    的头像 发表于 01-15 14:59 1059次阅读

    ADUC7061如何使用C语言实现EEPROM功能?

    我使用ADUC7061做的信号采集,现在客户需要实现EEPROM功能来保存3-5个数据,请问如何使用C语言实现?不使用外部EEPROM 专用IC。
    发表于 01-12 06:56

    嵌入式C语言大神的进阶思路

    熟悉种或几种CPU架构,掌握几种架构的汇编语言,学会使用反汇编去分析C语言底层运行过程
    的头像 发表于 01-02 09:58 628次阅读