如果我想从一个基本地址为$ a0且off set $ t2的内存中加载一个值,为什么我不能执行以下操作:
lw $s2, $a1($t2)
Run Code Online (Sandbox Code Playgroud)
那么上面表达式的等价物是什么?
即使借助Google和我手中的教科书,我似乎无法掌握这些内容的概念.
遵循格式(操作码,rs,rt,偏移)......
我试图理解使用addi和之间的区别add,两者是否做同样的事情?
例如
addi $t0, $0, $a0
add $t0 , $0, $a0
Run Code Online (Sandbox Code Playgroud) 所以我在MIPS中构建一个计算器程序,我正在尝试编写乘法和除法函数.
目前我在循环中读取整数,如下所示:
li $v0, 5
syscall
Run Code Online (Sandbox Code Playgroud)
然后最终调用我的函数multi并divi根据用户想要执行的操作.
因此,假如我在整数$a0和$a1,这将是一个干净的方式繁殖$a0的$a1和/或分裂$a0的$a1?我一直在网上寻找,但我找不到干净简单的方法,因为我必须将结果回复$v0
我在我的项目中使用本机库.我已经为ARM,ARMv7和x86架构构建它们,只是想知道我是否应该为MIPS构建它们?我在哪里可以找到有关Android设备的哪些部分在MIPS处理器上运行的任何统计信息.我想了解它是否有意义使我的APK在4 - 5 MB大,因为MIPS库.
我正在研究一个实用程序,它需要将十六进制地址解析为二进制内的符号函数名和源代码行号.该实用程序将在x86上的Linux上运行,但它分析的二进制文件将用于基于MIPS的嵌入式系统.MIPS二进制文件采用ELF格式,使用DWARF作为符号调试信息.
我目前正计划派生objdump,传入十六进制地址列表并解析输出以获取函数名称和源行号.我已经编译了一个支持MIPS二进制文件的objdump,它正在工作.
我更喜欢有一个软件包,允许我从Python代码本地查找内容而不需要另外的进程.我在python.org上找不到libdwarf,libelf或libbfd,也没有提到dwarfstd.org上的python.
某处有合适的模块吗?
目前我正在为我的计算机组织中期学习,我正在努力完全理解堆栈指针和堆栈.我知道围绕这个概念的以下事实:
向堆栈添加内容需要两个步骤:
addi $sp, $sp, -4
sw $s0, 0($sp)
Run Code Online (Sandbox Code Playgroud)我认为阻止我完全理解的是,我无法想出一个相关的,自我明显的情况,我需要和/或想要用堆栈指针跟踪数据.
有人可以详细说明这个概念并给我一些有用的代码示例吗?
我正在尝试编写一种方法来对 MIPS 汇编语言中的文本字符串进行凯撒移位。我的加密方法如下:
encryptMessage:
la $s0, message #s0 will hold message that will be iterated through
lw $t1, key #s1 will hold the key to shift by
li $t0, 0 #t0 will be iterator, starting at 0
encryptionLoop:
add $s1, $s0, $t0 #$s1 = message[i]
lb $s2, 0($s1) #Loading char to shift into $s2
beq $s2, $zero, exit #Breaking the loop if we've reached the end: http://stackoverflow.com/questions/12739463/how-to-iterate-a-string-in-mips-assembly
add $s2, $s2, $t1 #Shifting the character by the key amount
la $s1, …Run Code Online (Sandbox Code Playgroud)