首页
学习
活动
专区
圈层
工具
发布

MIPS架构深入理解2-MIPS架构体系

术语-指令集和架构在语义上非常接近,所以,有时候你也会见到这两个词的组合缩写-指令集架构(ISA)。 对于MIPS指令集架构描述最好的,肯定是MIPS公司出版的MIPS32和MIPS64架构规范。...为支持MIPS架构的GNU C编译器保留的,MIPS公司自己的C编译器没有使用,而把这个寄存器当作保存寄存器使用( 31:(ra)存放返回地址。...2.6 汇编语言的合成指令 前边我们或多或少提及了一些编译器的伪指令等概念,也可以成为合成指令。因为它是编译器通过多条指令合成的一个伪指令。 为什么需要伪指令呢? 因为MIPS架构只有一种寻址方式。...最后由编译器生成两条机器指令。 此处,又再一次体现了MIPS架构的设计理念:硬件尽量简单,辅以软件实现。编译器提供的辅助有: 加载32位立即数: 直接加载立即数。...所以,这是一个平衡和选择的问题。 我们知道,MIPS架构的设计理念是:硬件尽量简单,辅以软件实现。所以,MIPS架构把一些流水线的时序延迟问题暴露给编程人员或者编译器去优化实现。

7.3K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    源码编译安装MySQL(银河麒麟v10 mips架构)

    背景 因公司买了国产mips架构服务器,比较小众,MySQL官网大多数都是X86架构安装包,并不提供mips架构现成的安装包,只能使用源码编译进行安装 依赖 依赖什么的因为在 机房是内网环境,无法联网,...只能说报什么错就去找什么依赖,我也是这么一步步过来的,因为国产系统你懂的 上传源码包并解压 源码包请 选择自带boost的版本,例如:mysql-boost-5.7.43.tar.gz,我的路径是/opt...mysql.sock touch /var/lib/mysql/mysql_err.log touch /var/lib/mysql/mysql.pid touch /var/lib/mysql/mysql.log 编译...make sudo make install 配置文件my.cnf cp /etc/my.cnf /etc/my.cnf.bak > /etc/my.cnf vim /etc/my.cnf 配置文件的内容...# MySQL configure export PATH=$PATH:/usr/local/mysql/bin # 生效 source ~/.bashrc 登录(无密码,输入密码的时候直接回车即可

    1.4K10

    交叉编译 ARM 架构浏览器(补充)

    在上一篇文章《deepin Linux 系统上交叉编译 ARM 架构浏览器》中,我们探讨了 Chromium 浏览器交叉编译的基本流程。但在后续的调整编译参数的过程中,发现一些新的问题。...为此,这篇文章对上一篇文章进行一个补充,补充一些遗漏的细节。 在编译 Chromium 源码的过程中,你可能会碰到如下错误: ../.....cannot open shared object file: No such file or directory 加上 LD_LIBRARY_PATH 指定动态库加载路径也不管用,后来才发现是 so 编译的架构有问题...,但 so 却是 x86-64 架构,当然就无法加载。...mogoweb/mywritings/master/book_wechat/2025/202503/images/cross_compile_chromium_01.png) 小结 Chromium 交叉编译出的可执行文件和动态库居然是不同的架构

    98210

    深入了解 Golang 多架构编译:交叉编译最佳实践

    Golang(Go)作为一种现代化的编程语言,具有出色的跨平台支持,通过其强大的多架构编译功能,可以轻松实现在各种操作系统和硬件架构上的部署。...本文将深入探讨 Golang 多架构编译的原理、方法以及示例。 1. Golang 多架构编译的原理 Golang 的多架构编译功能依赖于两个关键的环境变量:GOOS 和 GOARCH。.../build.sh 这个脚本会在 build 目录中生成多个目标平台的可执行文件。 3.3 安装和使用交叉编译工具链 对于一些架构,例如 ARM,你可能需要安装特定的交叉编译工具链。...例如:在 CentOS X86 架构的环境上,编译 ARM 架构的应用。...使用 ARM 工具链进行交叉编译 安装完成并验证工具链后,你可以使用这些工具链为 ARM 平台进行交叉编译。

    3.4K20

    交叉编译学习笔记(一)——交叉编译和交叉工具链

    交叉编译学习笔记(一)——交叉编译和交叉工具链 最近看论文看的烦,又重新拾起之前没有完全完成的交叉编译,准备在网上找资料,好好研究一下。...交叉编译 了解交叉编译之前,首先要介绍本地编译,才能进一步对比本地编译与交叉编译的区别。 1....交叉编译的意义 交叉编译的概念一般用于嵌入式系统开发。 使用交叉编译的主要原因,是嵌入式系统中配置较低,资源过少,远不及PC的编译效率。...另一方面,PC机的CPU架构是x86型的,ARM的CPU架构是ARM型的,所以这时候就需要用交叉编译器(此处即为ARM的编译器)编译程序代码,然后移植到ARM平台运行。所以这就是交叉编译的意义所在。...交叉工具链中最重要的工具还是编译器gcc,所以我们也经常把交叉工具链简称为交叉编译器,即严格意义上来讲,交叉编译器指的是交叉编译版本的gcc,但为了叫法上的方便,我们平常说的交叉编译,其实指的都是交叉工具链

    7.6K70

    交叉编译学习笔记(二)——交叉编译器的命名规则

    交叉编译学习笔记(二)——交叉编译器的命名规则 在进行嵌入式开发过程中,用到的交叉编译器经常是这样的名称: arm-linux-gcc arm-none-linux-gnueabi-gcc arm-linux-gnu-gcc...交叉编译器命名规则 交叉编译工具链的命名规则: arch [-vendor][-kernel][-system] 其中每部分的含义如下: arch:体系架构,如ARM, MIPS vendor:工具链提供商...,即系统架构,表明交叉编译器的目标系统平台架构,即用该交叉编译器编译出的程序是运行在哪种CPU上。...[-vendor] vendor,即工具链提供商,表示该交叉编译器提供者。 vendor的值貌似是可以随便填写的…… 但一般情况下,大家把vendor携程体系架构的值。...ARM架构的Linux系统,可用于编译 ARM 架构的u-boot、Linux内核、linux应用等。

    6.2K50

    wifidog交叉编译

    交叉编译wifidog并在openwrt平台上执行的过程。主要是针对wifidog源代码被改动后。 不得不亲自进行交叉编译移植的时候,所碰到的一些问题。...(2)交叉编译环境 这个须要提前准备好。也不多说了 (3)解压。并进入代码文件夹 执行..../configure –host=mips-openwrt-linux –prefix=$PWD/install host參数指定的是目的平台,普通情况下。...设定了host之后,makefile中的编译器会自己主动调整为host平台的编译器 prefix參数是指执行make install 之后。程序安装的路径。...我是不得不改动wifidog 的源代码,添加接口。才自行交叉编译的。 假设像我情况一样的话,建议先在线安装wifidog,然后交叉编译完之后把原来安装的wifidog替换掉就好了。

    2.3K30

    MIPS架构深入理解1-MIPS和RISC架构体系介绍

    (MIPS架构的汇编也是最简单易懂的代码之一) 尽管有这些问题,但是MIPS架构的设计者也在思考,如何使CPU可以被编译器更加简单高效地优化。...一些编译器高效优化的要求和流水线的设计要求是兼容的,所以MIPS架构的CPU具有32个通用寄存器,使用具有三个操作数的算术/逻辑指令。那些复杂的特殊目的的指令也是编译器不愿意产生的。...如果使用16个寄存器并不能完全满足现代编译器的需要,而使用32个寄存器对于C编译器是完全足够的,足以覆盖最大最复杂的函数调用关系。...但是,如果程序中显式地使用short或者char类型的数据进行运算,支持MIPS架构的编译器必须额外地插入一些机器指令,保证结果能够像在真正的16位或8位机器上那样正确运行。...有一种推荐的子程序调用时堆栈栈帧布局,这样可以混合使用汇编语言和C语言编程,使用不同的编译器选项进行编译。但是这一切和硬件都没有关系,需要人为实现。

    9.7K21

    Golang交叉编译

    Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。...Mac 下编译 Linux 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go CGO_ENABLED=0...GOOS=windows GOARCH=amd64 go build main.go Linux 下编译 Mac 和 Windows 64位可执行程序 CGO_ENABLED=0 GOOS=darwin...(darwin、freebsd、linux、windows) GOARCH:目标平台的体系架构(386、amd64、arm) 交叉编译不支持 CGO 所以要禁用它 上面的命令编译 64 位可执行程序...,你当然应该也会使用 386 编译 32 位可执行程序 很多博客都提到要先增加对其它平台的支持,但是我跳过那一步,上面所列的命令也都能成功,且得到我想要的结果,可见那一步应该是非必须的,或是我所使用的

    3.3K20

    交叉编译gdb

    环境QQ2440配套的环境 由于之前习惯了用gdb调试coredump,所以,打算自己编一个QQ2440上的gdb文件 很早以前用的是gdbserver,后来发现,有的时候没有网络环境的时候,还真就得有一个...gdb,所以,编译了一个静态的gdb [root@T-bagwellgdb]# ll gdb-rwxr-xr-x 1 root root 11937427 2009-09-14 07:23 gdb[root...ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.14, not stripped[root@T-bagwell gdb]# 编译完以后...,生成的文件就是这样的 具体过程如下: 编译的时候遇到了需要找到termcap,我先交叉编译了termcap,然后暂时先存着 然后把gdb里的configure改了一下,我做成了patch,在附件中能看到...还要找到之前编译的termcap的lib,因为在最后链接生成gdb的时候需要用到libtermcap.a文件,我交叉编译的时候,直接将其生成在对应的目录下了 在configure配置gdb环境时 ..

    4.2K20

    交叉编译环境的安装

    什么是交叉编译 我们在Linux中使用自带的gcc和g++编译器进行编译的程序是针对X86架构的。而我们开发板大多都是ARM或者其他架构的开发板,我们就需要编译出针对其他架构的程序。...那么究竟什么是交叉编译呢? 其实就是在我们的PC(X86)上编译出其他平台上的代码,就称它为交叉编译。...想编译出在其它平台上可执行的程序,就需要使用不同的编译器,因为不同的编译器有不同的指令集等。 关于 交叉编译器有很多,我们本次采用linaro公司提供的一个交叉编译工具。...arm-linux-gnueabi/ 1、下载好之后进行解压: tar -xvf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi.tar.xz 2、把解压后的整个目录拷贝到自己想要存放的地方...,那么就打开:/etc/profile 如果想给某个特定用户配置,可以打开用户目录下的: vim ~/.profile vim ~/.bashrc 等等,都是可以的。

    3.1K10

    Golang交叉编译(跨平台编译)的使用

    /main.go 在windows10之前的系统版本上使用cmd命令行可以使用上述命令编译 powershell命令行中 在powershell命令行中编译(示例编译64位linux程序) // 设置.../main.go 一、CGO_ENABLED 作用: 用于标识(声明) cgo 工具是否可用 意义: 存在交叉编译的情况时,cgo 工具是不可用的。...在标准 go 命令的上下文环境中,交叉编译意味着程序构建环境的目标计算架构的标识与程序运行环境的目标计算架构的标识不同,或者程序构建环境的目标操作系统的标识与程序运行环境的目标操作系统的标识不同 关闭...用于标识(声明)程序构建环境的目标计算架构,若不设置,默认值与程序运行环境的目标计算架构一致 系统 GOOS GOARCH Windows 32 位 windows 386 Windows 64 位...五、GOHOSTARCH 用于标识(声明)程序运行环境的目标计算架构 六、go build -a强制重新编译,简单来说,就是不利用缓存或已编译好的部分文件,直接所有包都是最新的代码重新编译和关联 -installsuffix

    5.4K40

    交叉编译概念详解

    p_fly 读完需要 14分钟 速读仅需 5 分钟 1 交叉编译简介 1.1 什么是交叉编译 对于没有做过嵌入式编程的人, 可能不太理解交叉编译的概念, 那么什么是交叉编译?它有什么作用?...1.3 为什么交叉编译比较困难 交叉编译的困难点在于两个方面: 不同的体系架构拥有不同的机器特性 Word size: 是 64 位还是 32 位系统 Endianness: 是大端还是小端系统...注意: 严格意义上来说,交叉编译器,只是指交叉编译的gcc,但是实际上为了方便,我们常说的交叉编译器就是交叉工具链。本文对这两个概念不加以区分,都是指编译链。...mips-malta-linux-gnu-gcc 其中,对应的前缀为: arm-none-linux-gnueabi- arm-cortex_a8-linux-gnueabi- mips-malta-linux-gnu...Software/WebHome ) 下载已经编译好的交叉编译链在 https://launchpad.net/gcc-arm-embedded 下载已经编译好的交叉编译链一些制作交叉编译链的工具中,包含了已经制作好的交叉编译链

    5.9K10

    什么是交叉编译

    背景首先我并不是搞什么嵌入式开发的,之所以会涉及到“交叉编译(ross-compilation)”是因为,最近在搞 OPenVINO 的 ARM 插件,试了很多次总是编译报错,于是采用了交叉编译的方式进行...如果你和我一样刚开始接触这个概念,那我就简单的把我所理解的交叉编译和大家说一下,如果有不对的地方,还请大佬们多多指教。...概念交叉编译器(Cross compiler)是指一个在某个系统平台下可以产生另一个系统平台的可执行文件的编译器。交叉编译器在目标系统平台难以或不容易编译时非常有用。...编译多个目标库。举个例子,一个公司可能希望支持不同版本或不同种类的操作系统,有了交叉编译,便可以为每个目标设置一个编译环境进行编译。...在为新平台开发软件,或者开发/使用未来平台的仿真器时,则使用交叉编译器来编译必要的工具,如操作系统和本机编译器。

    72000

    基于Docker的Golang交叉编译

    Golang(Go)作为一种强类型、编译型语言,天生具有跨平台的优势。通过交叉编译,开发者可以在一个平台上生成适用于另一个平台的可执行文件。...为什么选择Docker进行交叉编译?环境一致性:Docker可以确保无论是在开发机器、CI服务器,还是生产环境,使用的编译环境都是一致的,从而避免了“在我的机器上能运行”的问题。...编写Dockerfile接下来,我们需要编写Dockerfile,用于构建交叉编译的Docker镜像。...xgo是一个用于Golang的交叉编译工具,支持多种平台和架构。...构建Docker镜像在项目根目录下执行以下命令构建Docker镜像:docker build -t mygoapp:cross-compile .进行交叉编译现在我们可以使用构建好的Docker镜像进行交叉编译

    5.4K30
    领券