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
    +关注

    关注

    243

    文章

    24436

    浏览量

    687460
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11218

    浏览量

    222953
  • ALU
    ALU
    +关注

    关注

    0

    文章

    34

    浏览量

    13452

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    汇编语言还有必要学习吗

    1、嵌入式操作系统需要汇编语言 2、实时性要求非常高的地方,需要汇编语言,比如FFT算法。 3、汇编语言做运算那叫个痛苦,下面是
    的头像 发表于 11-25 11:46 456次阅读
    <b class='flag-5'>汇编语言</b>还有必要学习吗

    汇编语言的起源

    汇编语言是什么? 我们知道,CPU 只负责计算,本身不具备智能。你输入条指令(instruction),它就运行次,然后停下来,等待
    发表于 11-20 07:19

    汇编寄存器的知识

    学习汇编语言,首先必须了解两个知识点:寄存器和内存模型。 先来看寄存器。CPU 本身只负责运算,不负责储存数据。数据般都储存在内存之中,CPU 要用的时候就去内存读写数据。 但是
    发表于 11-20 06:45

    C语言和单片机C语言有什么差异

    汇编语言机器才能读懂,所以每个平台的编译器编译成对应平台汇编的程序,每个平台的汇编样,当然编译器也不样。 DOS上的TC2 TC3 W
    发表于 11-14 07:55

    RVMCU课堂「7」: 手把手教你玩转RVSTAR—汇编程序篇

    相对于抽象层次更高的C/C++语言汇编语言门抽象层次比较低的语言,面向的是最底层的硬件,直接使用处理器的基本指令。虽然现在大多数的程序设计已经不再使用
    发表于 10-31 08:46

    复杂的软件算法硬件IP核的实现

    关系的“硬件汇编语言,即 Hardware Assembly(HASM),第二步就将 HASM 文本描述的具体逻辑实现直接翻译成 HDL 文本。在这里主要分享下 HASM 以及 C
    发表于 10-30 07:02

    通过内联汇编调用乘法指令mulh\\mulhsu\\mulhu

    1.蜂鸟E203内核支持的乘法指令有四种(不含融合指令),分别为mul、mulh、mulhu与mulhsu。它们的汇编语言格式如下: mulrd,rs1, rs2 将两个32整数相乘,取低
    发表于 10-24 06:52

    ARM入门学习方法分享

    使用些在线资源,如ARM的官方文档和教程,来学习ARM汇编语言。 三、使用开发工具:为了进行ARM的开发,你会需要些开发工具。ARM提供了些免费的开发工具,例如Keil MDK
    发表于 07-23 10:21

    汇编语言教学中文资料

    电子发烧友网站提供《汇编语言教学中文资料.rar》资料免费下载
    发表于 06-30 15:15 7次下载

    Windows环境下32汇编语言中文资料

    电子发烧友网站提供《Windows环境下32汇编语言中文资料.rar》资料免费下载
    发表于 06-30 15:14 0次下载

    单片机C语言实例(350+例)

    350+单片机C语言实例! 纯分享帖,需要者可点击附件免费获取完整资料~~~【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第时间告知,删除内容!
    发表于 05-22 21:47

    Linux主要的性能有哪些?

      什么是Linux?   Linux是套自由传播的Unix操作系统,是个基于posix和unix
    的头像 发表于 04-30 18:09 491次阅读
    Linux主要的性能有哪些?

    EE-128:C语言中的DSP:从C调用汇编成员函数

    电子发烧友网站提供《EE-128:C语言中的DSP:从C调用汇编成员函数.pdf》资料免费下载
    发表于 01-07 13:48 0次下载
    EE-128:C<b class='flag-5'>语言</b>中的DSP:从C调用<b class='flag-5'>汇编</b><b class='flag-5'>类</b>成员函数

    ADS1194调试串口输出,在定时间的转换后数据会少一位输出,为什么?

    调试的是ADS1194,每个/DRDY 接收转换数据并通过串口发送到串口助手中,先调试的CH1~CH4 通道,使用的是内部的Test_signal,增加了一位调试,即每进次/DRDY,调试
    发表于 01-07 07:30

    TMS320C6000汇编语言工具v7.4用户指南

    电子发烧友网站提供《TMS320C6000汇编语言工具v7.4用户指南.pdf》资料免费下载
    发表于 12-30 16:42 3次下载
    TMS320C6000<b class='flag-5'>汇编语言</b>工具v7.4用户指南