yis.c

来自「深入理解计算机系统 的lab」· C语言 代码 · 共 65 行

C
65
字号
/* Instruction set simulator for Y86 Architecture */#include <stdio.h>#include <stdlib.h>#include "isa.h"/* YIS never runs in GUI mode */int gui_mode = 0;void usage(char *pname){    printf("Usage: %s code_file [max_steps]\n", pname);    exit(0);}int main(int argc, char *argv[]){    FILE *code_file;    int max_steps = 10000;    state_ptr s = new_state(MEM_SIZE);    mem_t saver = copy_reg(s->r);    mem_t savem;    int step = 0;    exc_t e = EXC_NONE;    if (argc < 2 || argc > 3)	usage(argv[0]);    code_file = fopen(argv[1], "r");    if (!code_file) {	fprintf(stderr, "Can't open code file '%s'\n", argv[1]);	exit(1);    }    if (!load_mem(s->m, code_file, 1)) {	printf("Exiting\n");	return 1;    }    savem = copy_mem(s->m);      if (argc > 2)	max_steps = atoi(argv[2]);    for (step = 0; step < max_steps && e == EXC_NONE; step++)	e = step_state(s, stdout);    printf("Stopped in %d steps at PC = 0x%x.  Exception '%s', CC %s\n",	   step, s->pc, exc_name(e), cc_name(s->cc));    printf("Changes to registers:\n");    diff_reg(saver, s->r, stdout);    printf("\nChanges to memory:\n");    diff_mem(savem, s->m, stdout);    free_state(s);    free_reg(saver);    free_mem(savem);    return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?