问题标签 [mips64]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2934 浏览

mips - 在 MIPS64 中加载地址

这可能是一个简单而明显的事情,我只是没有看到,但是如何在 MIPS64 处理器中加载地址?在 MIPS32 处理器中,以下汇编程序伪指令:

扩展为:

查看 MIPS64 指令集,我发现它lui仍然将 16 位立即数加载到 32 位字的上半部分。似乎没有任何类型的扩展指令将立即数加载到 64 位字的上部区域。那么,这似乎是为了执行相当于la伪指令的操作,我需要扩展为类似以下的代码:

这让我觉得有点……像加载地址这样基本的东西令人费解,所以它让我确信我忽略了一些东西。

我忽略了什么(如果有的话)?

0 投票
1 回答
1544 浏览

boost - Boost.asio编译问题:未定义引用`__sync_add_and_fetch_8

嘿伙计们,这可能是一个菜鸟问题,但我真的无法通过谷歌找到任何有用的解决方案。我正在用 boost.asio 测试一个 hello world,程序非常简单:

我通过了编译并在我的Intel Pentium PC (Ubuntu 10.10, gcc 4.4.5, Boost 1.46.0)上运行良好。我使用的命令行是

g++ -oa a.cpp -I /Boost-Include-Path/ -L /Boost-lib-Path/ -lboost_system

但是当我在另一台机器上编译相同的代码时(这是一个很大的,我稍后会解释),它无法通过编译并给出这样的错误:


/tmp/ccOZxZBX.o:在函数boost::asio::detail::gcc_sync_fenced_block::gcc_sync_fenced_block()': a.cpp:(.text._ZN5boost4asio6detail21gcc_sync_fenced_blockC1Ev[boost::asio::detail::gcc_sync_fenced_block::gcc_sync_fenced_block()]+0x4c): undefined reference to__sync_lock_test_and_set_4' /tmp/ccOZxZBX.o:在boost::detail::atomic_count::operator++()': a.cpp:(.text._ZN5boost6detail12atomic_countppEv[boost::detail::atomic_count::operator++()]+0x30): undefined reference to函数boost::detail::atomic_count::operator--()': a.cpp:(.text._ZN5boost6detail12atomic_countmmEv[boost::detail::atomic_count::operator--()]+0x30): undefined reference to__sync_add_and_fetch_8' /tmp/ccOZxZBX.o:在函数boost::detail::atomic_count::operator long() const': a.cpp:(.text._ZNK5boost6detail12atomic_countcvlEv[boost::detail::atomic_count::operator long() const]+0x30): undefined reference to__sync_add_and_fetch_8'


我使用的机器是SiCortex SC5832,它使用MIPS64指令集处理器,操作系统更改为CentoOS。GCC 4.2.3,Boost1.46.0。MIPS的兼容性是否可能存在问题?我添加了 -mips64 选项,但它仍然给出相同的错误。我知道这种环境不会很平常,但我想一些使用类似大机器的人可能会面临同样的问题。

任何帮助,将不胜感激。顺便说一句,我没有 sudo 权限。

谢谢,托尼

0 投票
2 回答
24975 浏览

mips - MIPS架构系统调用指令

系统调用指令在 MIPS 中的作用是什么?

0 投票
3 回答
10450 浏览

linux - 没有dpkg-architecture时如何区分linux上的mips cpu类型?

简短的问题:如何在任何 Linux 发行版上可靠地区分mipsmipselmips64mips64el ?

更长的解释:

我们为许多架构提供静态构建/分发独立的二进制文件(用于 TeX)。安装脚本通常运行uname -suname -m确定操作系统和体系结构。然后根据该决定从服务器获取二进制文件,因此它需要可靠地工作。它确实如此。几乎无处不在,除了 Mac OS X 10.6 和 Debian。Mac 会在运行 64 位应用程序的操作系统上报告i386 ,而 Debian 会在 32 位操作系统上报告mips64 。

mips64上的 Debian正确报告处理器类型,但这对我没有帮助,至少有两个原因:

  1. 操作系统是 32 位的,而不是顾名思义的 64 位。
  2. 它以小端模式运行。Debian 称之为mipsel,而不是mips。它通常可以切换,但操作系统只能运行在一种模式下,mips 软件通常与 mipsel 不兼容。

以下是系统命令的一些输出:

dpkg-architecture 将非常适合该任务,除了它不存在于其他 Linux 发行版上。

第一个问题已经在这里解决了:如何确定给定的 Linux 是 32 位还是 64 位?

命令

在我的系统上正确报告 32。

但是我如何确定它是大端还是小端呢?

我发现 config.guess 可以确定差异,但它是通过运行最终用户计算机上可能不存在的编译器来确定的。除此之外 config.guess 完全忽略了操作系统在 32 位模式下工作并错误地报告mips64el而不是mipsel的事实。

0 投票
1 回答
3103 浏览

linux - 交叉编译 gnutls 时出错

我正在尝试交叉编译 gnutls。Gnutls 依赖于 libnettle。我能够交叉编译 libnettle,但是,在尝试交叉编译 gnutls 时,我在配置过程中遇到错误:

我交叉编译的 libnettle 版本是 2.2。

配置命令是:

我也试过:配置LDFLAGS="-L/home/tom/lib/nettle-2.2"没有运气。

这些库安装在 /home/tom/lib/nettle-2.2/lib 中。我也试过这个目录。由于某种原因,libnettle 没有被检测到。有谁知道为什么?

0 投票
0 回答
530 浏览

mono - 在 OCTEON (mips64) 上引导单声道可提供工作运行时,但 gmcs 不起作用

我正在尝试为运行 Debian Sid 的 Cavium OCTEON (mips64) 编译单声道(来自 git)。

如果我尝试完全在 OCTEON 上编译(没有任何现有的单声道安装),它会到达 mcs 目录,然后遇到麻烦。这些问题与没有功能性 gmcs 有关。make get-monolite-latest 的建议路径不起作用(错误的核心版本,仍然没有 gmcs 等)。

为了解决这个问题,我尝试了为 ARM 交叉编译mono的过程。当然,我手头有快速 MIP 硬件,所以我不使用 Scratchbox。

拆分构建过程没有错误。在 OCTEON 上安装后,我可以运行已经编译的 C# 程序(通过 x86_64 系统上的 gmcs)。但是,我无法在 OCTEON 上从源代码编译。因此,IL 运行时似乎可以工作,但编译器却不行。

例如,从http://www.mono-project.com/Mono_Basics编译简单的 hello world给出以下内容:

我觉得我很接近,但错过了一步。就好像它没有找到 mscorelib.dll。然而,该文件似乎确实存在于前缀路径下:

在我开始深入研究 mcs 代码以了解它的流程和出了什么问题之前,我希望这里的某个人能够阐明这个问题并为我指明正确的方向。我错过了什么吗?有什么明显的解决办法吗?

0 投票
1 回答
233 浏览

assembly - 在数据段中输入后直接保存输出

这是我的代码:

我有一个循环,里面有一个子例程。每次“jr $ra”命令将流返回到我的主函数时,子返回(在 $v0 reg 中)我想要保存的输出。我需要在数据段中的输入之后直接保存这些输出。我该怎么做呢?如果它只是一个输出,我可以说:

之后会直接保存。但是有多个输出,那么我如何以一般方式执行此操作?

0 投票
2 回答
912 浏览

linux - 龙芯CPU和MIPS组装?

我有一台 Gdium Liberty 1000 笔记本电脑(龙芯 2F 处理器)正在送我。我将主要使用它来探索 MIPS 汇编语言。龙芯的内部架构应该与 MIPS CPU 不同。它实际上是在没有修改的情况下运行 MIPS 程序集(MIPS64?)还是龙芯 2F 架构有什么特殊的怪癖?我意识到我可以在我的 Intel/AMD x86 处理器上将 SPIM(或 MARS)作为 MIPS 模拟器运行,尝试在本地运行它似乎很有趣。

它是否在没有修改的情况下运行 MIPS 程序集(MIPS64?)?

Gdium(它运行 Mandriva Linux 的一个版本)上有哪些工具可用于学习 MIPS 汇编?

0 投票
1 回答
415 浏览

mips - 可以使用单个指令放置在所需寄存器中的所有位模式的集合

给定以下一组 MiniMIPS 指令:

在 MiniMips 指令中,对于某些操作,例如将寄存器初始化为零位模式(所有位都为零),可能会有多个指令具有执行此操作的能力。

我的问题是,可以使用给定指令集中的单个指令将所有位模式放在所需寄存器中的集合是什么。

0 投票
2 回答
1288 浏览

c - 将 C 转换为 MIPS64 程序集

我已经用 C 编写了一些代码,需要将其转换为 MIPS 64,无论是否进行优化。我一直在尝试使用 gcc 将其转换,但这会将其转换为复杂得多的 x86。此外,我一直在尝试找到一个交叉编译器,但无法让任何编译器工作。任何帮助和建议将不胜感激。

亲切的问候,