我正在编写一个MIPS程序来排序8个ascii属性,它们的地址在寄存器$t0-7中。在比较两个字符串时,我需要将地址传递给一个函数(通过保存到$s0和$s1中)。如果我想在循环中做到这一点,我如何递增寄存器值?我能这么做吗?或者我需要将所有的地址都放在内存中?
例如,如果我的循环是这样的,在伪代码中:
for loop with index i:
move address from register j into $s0
move address from register j+1 into $s1
call function for return value
use return v
我有一个关于硬件内存布局的问题。
我目前正在读取设备的数据表。
它在其登记册清单中列出了所有数据的登记地址,以便通过I S.C或SPI进行通信(表39,第105页)。以下是前三个数字的摘录:
┌─────────┬─────────┬──────────────────────────────────┬─────────────────────────────────┐
│ Address │ Name │ Description │ Bit Length During Communication │
├─────────┼─────────┼─
我想测试一个程序来访问硬件性能计数器。
我已经编译了一个基本的火箭芯片(freechips.rocketchip.system-DefaultConfig),并且正在使用riscv-pk来运行一个二进制文件。我正在运行一个在Verilator中的核心模拟,在UCB Chipyard项目中编译了所有这些代码,其中大部分都是默认的。
二进制的C如下所示:
#include <stdio.h>
#define CACHE_MISS 0x100
int loop(int n, int a) {
int b = 0;
for(int i=0; i
我正在尝试使用16位汇编复制字符串。
我在.dirBafer中有(其中) 16个11个字符的字符串,我想把每个字符串复制到.ime_dat中,这样我就可以打印它并在以后处理它(处理代码还没有编写)。每个字符串的第一个字符由32个字节的数据分隔。基本上,.dirbafer是一个FAT12目录的转储文件,我正在尝试打印文件名。
我有以下代码:
mov dx, .dirBafer ;loads address of .dirBafer in dx
mov cx, 16 ;16 entries in a dir
.load_dir:
push cx
m