《自己动手写CPU》学习记录(4)——第4章/Part 2

news2025/1/10 21:30:49




目录

引言

致谢

拥有Linux开发环境

1、Linux虚拟机安装

2、共享文件夹

GNU工具链安装

Makefile

RAM.ld

Bin2Mem.exe

注意

路径

测试


引言

上篇文章实现了 ori 指令,并且搭建验证平台,验证了功能的正确性。但是有一个问题就是,当时验证的思路并不是将C语言通过编译器编译之后产生一系列指令码,而是手写 ori 指令,写入指令存储器内,完成的是简单的设计功能验证。本片将着手配置MIPS的编译环境。

致谢

感谢书籍《自己动手写CPU》及其作者雷思磊。一并感谢开源精神。



拥有Linux开发环境

1、Linux虚拟机安装

由于本人之前学习EDA软件时,电脑就安装了 Ununtu16.04 的虚拟机,所以此处直接跳过。当时安装的记录:

我的LINUX入门记录(1)https://blog.csdn.net/qq_43045275/article/details/127418509?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167049134716800182786680%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=167049134716800182786680&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-127418509-null-null.nonecase&utm_term=linux&spm=1018.2226.3001.4450

2、共享文件夹

参考下面链接:VMware下共享文件夹的实现

GNU工具链安装

终端输入:

mips-linux-gnu-gcc -v

可以按照提示的安装命令安装。

建议将下面的所有文件置于共享文件夹目录下!

Makefile

分享一下:

ifndef CROSS_COMPILE
	CROSS_COMPILE = mips-linux-gnu-
endif
CC = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld

OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump

OBJECTS = ISTC_ROM.o
export CROSS_COMPILE
all:ISTC_ROM.data ISTC_ROM.om ISTC_ROM.o ISTC_ROM.bin ISTC_ROM.asm

%.o:%.s
	$(CC) -mips32 -EB $< -o $@

ISTC_ROM.om:RAM.ld $(OBJECTS) 
	$(LD) -EB -T RAM.ld $(OBJECTS) -o $@

ISTC_ROM.bin:ISTC_ROM.om
	$(OBJCOPY) -O binary $< $@

ISTC_ROM.asm:ISTC_ROM.om
	$(OBJDUMP) -D $< >$@

ISTC_ROM.data:ISTC_ROM.bin
	./Bin2Mem/Bin2Mem.exe -f $< -o $@

clean:
	rm -rf *.o *.om *.bin *.data

RAM.ld

MEMORY
        {      
        ram(RW)    : ORIGIN = 0x00000000, LENGTH = 0x00001000
        }
SECTIONS
{
	  /*
	  For some reason the linker script can't see the _reset_vector symbol 
	  (even if we declare it global), so we explicitly set it. */
	.text :
        {
        *(.text)
        } > ram

        .data :
        {
        *(.data)
        } > ram
        .bss :
        {
        *(.bss)
        } > ram
        .stack  ALIGN(0x10) (NOLOAD):
        {
        *(.stack)
        _ram_end = .;
        } > ram
}
ENTRY (_start)

Bin2Mem.exe

这个文件网上有很多,找不到可以私信我。

注意

路径

测试

编写源程序文件 ISTC_ROM.s:

.org 0x0 		
.global _start 	
.set noat		

_start:
ori $1,$5,0x1100
ori $2,$6,0x0020
ori $3,$7,0xFF00
ori $4,$8,0xFFFF
nop 
nop 
ori $2,$8,0x0020
ori $3,$9,0xFF00
ori $4,$10,0xFFFF

在源文件所在的路径下,右键——>打开终端:

首先清除:

make clean

生成初始化文件:

make all

打开 .data 文件查看:



有问题可以评论区留言~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/75384.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

寻找网络1020的结构平衡点

( A, B )---2*n*2---( 1, 0 )( 0, 1 ) 用网络分类A和B&#xff0c;让A是&#xff08;0&#xff0c;1&#xff09;&#xff08;0&#xff0c;0&#xff09;&#xff0c;让B是&#xff08;1&#xff0c;0&#xff09;&#xff08;0&#xff0c;0&#xff09;。记为网络1020.AB的…

湖南中医药大学宿舍无线网络一体化项目

第二次上大王老师的课&#xff0c;上学期的微机这学期的计网&#xff0c;这学期一开学就是一个大项目&#xff0c;对于零基础&#xff0c;零经验的我们来说&#xff0c;老师布置给我们一项比较重大的任务就是——从零开始为我们学校宿舍部署无线网络。刚开始觉得这肯定完不成&a…

CRM客户管理系统能为小微型企业带来哪些优势?

回款&销售排名看板CRM&#xff08;顾客关系管理工作控制系统&#xff09;在亚洲地区发展了三十余年&#xff0c;让众多民营企业管理工作形式成功的从实体店转至线上&#xff0c;因此协助民营企业展开管理工作上的高效率提高&#xff0c;CRM控制系统做为两个能协助各类民营企…

python学习中的各种迷一样的问题之一

神秘一 Argument name should be lowercase oneX这个变量名可以改成one_x 神秘二 无缘无故被in 到def里的main() 原因是400行少了个" ) " 神秘三一个文件位置引发的血案 无法执行使用所选元素重构,别用捷克键盘来唬人了 test_03_2022-1202_to_2022-1209.py在…

你不知道13个嵌入式C语言优化技巧

【推荐阅读】 关于如何快速学好&#xff0c;学懂Linux内核。内含学习路线 深入linux内核架构--内存管理 了解ixgbe网卡驱动— 驱动注册&#xff08;纯代码分享&#xff09; 手把手教你如何编写一个Makefile文件 需要多久才能看完linux内核源码&#xff1f; 嵌入式系统受其使用的…

H02-RCNN和SPPNet

目录 1.目标检测-Overfeat模型 1.1 滑动窗口 1.2 Overfeat模型总结 2.目标检测-RCNN模型 2.1 完整的R-CNN结构 2.1.1 候选区域(Region of lnterest)得出(了解) 2.1.2 CNN网络提取特征 2.1.3 特征向量训练分类器SVM 2.1.4 非最大抑制&#xff08;NMS&#xff09; 2.1.…

Mybatis-plus 源码执行全流程解析

Mybatis-plus 源码执行全流程解析 废话 少数流程开始&#xff1a; 1、业务入口&#xff1a;userMapper.insertBatch(entityList); 执行到代理类&#xff1a; $Proxy222 (com.sun.proxy) 开始走代理流程&#xff0c;然后到了代理类&#xff1a; idea 执行流程取出栈信息&…

Mybatis增删改查

Mybatis增删改查 1&#xff0c;配置文件实现CRUD 1.1 环境准备 数据库表&#xff08;tb_brand&#xff09;及数据准备 -- 删除tb_brand表 drop table if exists tb_brand; -- 创建tb_brand表 create table tb_brand (-- id 主键id int primary key auto_increment,…

string的认识和使用

目录 一、网站上查看string类 1.网站 2.网站上的string类 二、string类的成员函数 1.默认成员函数 &#xff08;1&#xff09;构造函数、拷贝构造函数和析构函数 &#xff08;2&#xff09;赋值运算符重载 &#xff08;3&#xff09;容量操作 &#xff08;4&#xff09…

JavaWeb用户信息查看的登录、增删改查案例

黑马JavaWeb案例整理记录 文章目录案例源码&#xff1a;一、需求二、设计1、技术选型2、数据库设计三、开发步骤四、详细过程1、创建web项目&#xff0c;部署tomcat&#xff0c;导入jar包2、编写首页index.jsp3、编写servlet、servie、daomain、dao五、案例升级实现1、实现内容…

成长任务|花式show爱心代码

❤️立即投稿❤️ &#x1f4cc;活动规则 最近#李峋同款爱心代码#词条上了热搜&#xff0c;作为程序员的你&#xff0c;可不能错过这个给意中人大展身手的时机 ❤️ 使用代码画一颗#爱心#&#xff0c;将你的代码文件通过本页面投稿&#xff0c;审核通过即可参与活动 ❤️ 可使…

速锐得猎奇与猜想:数字化工业互联网能否真的走进未来

前年的8月份&#xff0c;我们独立设计一款燃气报警器&#xff0c;包括设计产品图纸&#xff0c;嵌入式软件、LED显示、核心代码、CAN网络及485架构、云端SAAS框图&#xff0c;应用场景等&#xff0c;在去年的5月份直接进入到了量产&#xff0c;第一批数量是2000套&#xff0c;升…

详细介绍NLP文本摘要

文章目录文本生成文本摘要抽取式文本摘要抽取式文本摘要方法案例分析优点缺点生成式文本摘要指针生成网络文本摘要预训练模型与生成式摘要优点缺点TextRank文本摘要BertSum模型文本摘要文本生成 文本生成&#xff08;Text Generation&#xff09;&#xff1a;接收各种形式的文…

IT行业几大方向(外行人之误解)

有很多同学一说自己是搞计算机的&#xff0c;搞软件的&#xff0c;做IT的&#xff0c;是个程序员。外行人&#xff0c;就往往很惊奇&#xff0c;说我电脑卡怎么处理&#xff0c;怎么盗别人QQ密码&#xff0c;把谁谁网站黑了&#xff0c;甚至我的网络很慢可以帮我提速一下吗等等…

如何设计es的索引库结构

1、确定索引库的名称 建议和使用的数据库的表名相对应 比如&#xff1a;数据库的表名为 那么索引库的名称可以为&#xff1a;item 2、确定索引库需要的字段 1.根据前端界面来判断需要什么字段 例如&#xff1a; 上边这个界面需要的就是&#xff1a; 分类&#xff0c;品牌&…

使用ZPL控制Zebra打印机

ZPL简介: Zebra编程语言 (ZPL)是所有 ZPL 兼容打印机使用的命令语言。可用于绘制文本、形状、条形码和图像等元素&#xff0c;组合这些元素。打印机使用它作为指令来创建打印在标签上的图像。 想要打印一个标签&#xff0c;您可能需要告诉打印机&#xff1a; 产品名称是什么…

Python学习基础笔记三十四——爬虫小例子

一个爬虫小例子&#xff1a; import requestsimport re import jsondef getPage(url):responserequests.get(url)return response.textdef parsePage(s):comre.compile(<div class"item">.*?<div class"pic">.*?<em .*?>(?P<id&…

Nginx的access.log日志分析工具-goaccess

一、安装goaccess wget http://tar.goaccess.io/goaccess-1.3.tar.gz --no-check-certificate #下载tar包 tar -xzvf goaccess-1.3.tar.gz #解压tar包 cd goaccess-1.3/ #进入目录 ./configure --enable-utf8 --enable-geoiplegacy --prefix/opt/goaccess #检测环境&…

宝塔严重未知安全性漏洞(宝塔面板或Nginx异常)

问题简述 论坛上的帖子 https://www.bt.cn/bbs/thread-105054-1-1.html https://www.bt.cn/bbs/thread-105085-1-1.html https://hostloc.com/thread-1111691-1-1.html 数据库莫名被删 https://www.bt.cn/bbs/thread-105067-1-1.html 以下内容来自群友消息&#xff1a; 速报:宝…

大学生餐饮主题网页制作 美食网页设计模板 学生静态网页作业成品 dreamweaver美食甜品蛋糕HTML网站制作

&#x1f468;‍&#x1f393;静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计&#x1f469;‍&#x1f393;,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等&#xff0c;用的最多的还是DW&#xff0c;当然不同软件写出的…