标签: mips

在MIPS中,HI和LO是什么

我正在阅读MIPS中的分区,我发现了div

将$ s除以$ t并将商存储在$ LO中,余数存入$ HI

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html

维基百科说

HI和LO用于访问乘法器/除法器结果,由mfhi(从高位移动)和mflo命令访问.

http://en.wikipedia.org/wiki/MIPS_architecture

HI和LO寄存器吗?它们是多少个寄存器?

assembly mips cpu-registers

21
推荐指数
2
解决办法
6万
查看次数

MIPS上的Valgrind报告没有堆使用情况

我正在使用valgrind(v3.10.0)来寻找复杂应用程序(一个经过大量修改的net-snmp版本)中的内存泄漏,该应用程序是作为更大的软件套件的一部分构建的.我确信存在泄漏(应用程序的内存占用量无限制地线性增长),但valgrind总是在终止时报告以下内容.

==1139== HEAP SUMMARY:
==1139==     in use at exit: 0 bytes in 0 blocks
==1139==   total heap usage: 0 allocs, 0 frees, 0 bytes allocated
==1139== 
==1139== All heap blocks were freed -- no leaks are possible
Run Code Online (Sandbox Code Playgroud)

总堆的使用不能为零-还有很多,很多电话mallocfree整个应用程序.Valgrind仍然能够找到"无效写入"错误.

正在编译该应用程序以及其他软件包,其中MIPS处理器的uclibc-gcc工具链(uclibc v0.9.29)将被闪存到运行busybox(v1.17.2)linux shell的嵌入式设备上.我正在设备上直接运行valgrind.我在启动Valgrind时使用以下选项:

--tool=memcheck --leak-check=full --undef-value-errors=no --trace-children=yes
Run Code Online (Sandbox Code Playgroud)

基本上,即使我使用了堆,Valgrind也没有检测到任何堆使用情况.为什么会这样?我的任何假设(下面)都是错误的吗?


我试过的

简单的测试程序

我从Valgrind 快速入门教程编译了简单的测试程序(使用与上面的应用程序相同的目标和工具链),以查看Valgrind是否会检测到泄漏.最终输出与上面相同:没有堆使用.

链接问题?

Valgrind文档在他们的FAQ上有如下说明:

如果您的程序是静态链接的,那么大多数Valgrind工具只有在能够用自己的版本替换某些功能(例如malloc)时才能正常工作.默认情况下,不替换静态链接的malloc函数.一个关键的指标是,如果Memcheck说"所有堆块都被释放 - 没有泄漏是可能的".

上面的声音与我的问题完全一样,所以我检查它是否动态链接到包含malloc和的C库free.我使用了uclibc工具链的自定义ldd可执行文件(我不能使用原生linuxldd),输出包括以下几行:

libc.so.0 => not found (0x00000000) …
Run Code Online (Sandbox Code Playgroud)

c valgrind memory-leaks memory-management mips

20
推荐指数
2
解决办法
1345
查看次数

预取指令

看起来预取用法的一般逻辑是,如果代码忙于处理直到预取指令完成其操作,则可以添加预取.但是,似乎如果使用过多的预取指令,那么它会影响系统的性能.我发现我们需要先获得没有预取指令的工作代码.稍后我们需要在各种代码位置中进行预取指令的各种组合,并进行分析以确定由于预取而实际可能改进的代码位置.有没有更好的方法来确定应该使用预取指令的确切位置?

embedded assembly arm mips prefetch

19
推荐指数
2
解决办法
7459
查看次数

延迟槽有什么意义?

因此,根据我对延迟槽的理解,它们在调用分支指令时发生,并且分支之后的下一条指令也从内存加载.这有什么意义?在分支被采取的情况下,你不希望分支后的代码不运行吗?是否节省时间,以防分支机构没有被采取?

我正在查看管道图,看起来分支后的指令正在进行中..

assembly mips pipelining

19
推荐指数
5
解决办法
2万
查看次数

Android模拟器系统映像和AMD处理器

我使用AMD FX X6 6300型处理器.(它支持虚拟化,我的BIOS设置为ON)
我安装了"Intel x86 Emulator Accelerator".当我尝试运行英特尔加速器设置时,我得到了无法安装的设置.(错误是虚拟化)

SDK Manager具有以下系统映像选项:
Android 4.2.2

  • 英特尔x86 Atom系统映像
  • ARM EABI v7a系统映像
  • MIPS系统映像

那么下载英特尔x86系统映像是否有意义?或者没有安装HAXM它没用?

我应该下载ARM或MIPS图像吗?对于AMD处理器,您会为仿真器系统映像推荐什么?

或者唯一的选择是使用快照?

android arm intel mips android-emulator

18
推荐指数
2
解决办法
4万
查看次数

汇编文件:.a .s .asm之间的差异

在MIPS模拟器"QTSpim"中,接受三种类型的文件:

  • .a
  • .s
  • .asm

这些文件类型之间是否存在差异,如果是,那有什么区别?

assembly file-type file mips

18
推荐指数
1
解决办法
1万
查看次数

MIPS反编译器

我正在寻找能够将MIPS机器代码转换为C代码的反编译器.有什么建议?

mips decompiler

17
推荐指数
2
解决办法
9358
查看次数

将CPU寄存器中的所有位有效地设置为1

要清除所有位,您经常会看到一个独占或在XOR eax, eax.反过来也有这样的伎俩吗?

我能想到的是用额外的指令反转零.

assembly arm x86-64 mips

17
推荐指数
1
解决办法
2154
查看次数

MIPS中的功能(程序)

我是MIPS语言的新手,我不明白MIPS汇编语言中的函数(过程)是如何工作的.这是但我会指出我的问题:

  1. 什么:

    • jal
    • jr
    • $ra

    意思是mips语言和重要的事情

  2. 当我们想要创建一个函数或(过程)时,我们如何使用它们?

procedure function mips

16
推荐指数
2
解决办法
6万
查看次数

ARM,MIPS,x86的Android os.arch输出?

为了识别Android设备的平台,似乎java系统属性"os.arch"就足够了:

Log.i("mytag", "os.arch: " + System.getProperty("os.arch"));
Run Code Online (Sandbox Code Playgroud)

大多数ARM设备响应: os.arch: armv7l

x86模拟器响应: os.arch: i686

真正的英特尔和MIPS设备有哪些输出?

x86 Android设备:??????

mips安卓设备:??????

还有其他平台和变种吗?

编辑Google TV:

看起来Google TV使用'none'来构建代码.

Vizio Co-Star:os.arch:armv7l,Build.CPU_ABI/Build.CPU_ABI2:none/unknown

Logitech Revue:os.arch:i686,Build.CPU_ABI/Build.CPU_ABI2:none/unknown

编辑澄清意图:

这里的目标是将实际设备列表的编译与其输出进行众包.AOSP代码的预期输出很有意思,但设备制造商(如上面的旧Google TV设备)可能会偏离提供AOSP代码预期的输出.

android arm mips android-x86

15
推荐指数
2
解决办法
8692
查看次数