You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MARS模拟器中MIPS代码permnext函数异常及排列生成问题求助

MIPS生成0-3字典序全排列问题求助(MARS 4.5模拟器)

我用MARS 4.5模拟器编写MIPS代码,目标是生成0、1、2、3的字典序全排列(第24个排列为3,2,1,0),但遇到以下问题:

  • 调用permnext函数时,将$a0内容复制到$t0后得到无效地址,指向.data区无目标数值
  • 运行时出现程序计数器(PC)为0x0000的错误
  • 优化寄存器使用规范后,程序仅能打印首个排列,无法输出后续内容

附相关代码

参考C代码

void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

int permnext(int arr[], int n) {
    int i = n - 2;
    while (i >= 0 && arr[i] >= arr[i+1]) i--;
    if (i < 0) return 0;
    int j = n - 1;
    while (arr[j] <= arr[i]) j--;
    swap(&arr[i], &arr[j]);
    int l = i + 1, r = n - 1;
    while (l < r) swap(&arr[l++], &arr[r--]);
    return 1;
}

int main() {
    int arr[] = {0,1,2,3};
    do {
        for (int i=0; i<4; i++) printf("%d ", arr[i]);
        printf("\n");
    } while (permnext(arr, 4));
    return 0;
}

初始MIPS代码

// 替换为实际初始代码内容

优化后的MIPS代码

// 替换为实际优化后代码内容

内容的提问来源于stack exchange,提问作者Yesinsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:25:17