《自己动手写CPU》学习记录(4)——第4章/Part 2
创始人
2024-03-29 16:10:05
0




目录

引言

致谢

拥有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_COMPILECROSS_COMPILE = mips-linux-gnu-
endif
CC = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ldOBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdumpOBJECTS = 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 文件查看:



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

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...