> compile NEMU

ysyx_22040000 李心杨
Linux calcite 6.6.18 #1-NixOS SMP PREEMPT_DYNAMIC Fri Feb 23 08:25:28 UTC 2024 x86_64 GNU/Linux
 18:37:56  up  22:06,  2 users,  load average: 0.61, 0.53, 0.60
This commit is contained in:
tracer-ysyx 2024-03-05 18:37:56 +08:00 committed by xinyangli
parent 30cd92be1f
commit be5579f88d

View file

@ -48,11 +48,6 @@ static void decode_operand(Decode *s, int *rd, word_t *src1, word_t *src2, word_
}
}
static void do_jump(Decode *s, int rd, int relative_address) {
R(rd) = s->pc + 4;
s->dnpc = s->pc + relative_address;
}
static int decode_exec(Decode *s) {
int rd = 0;
word_t src1 = 0, src2 = 0, imm = 0;
@ -67,8 +62,8 @@ static int decode_exec(Decode *s) {
INSTPAT_START();
INSTPAT("??????? ????? ????? ??? ????? 01101 11", lui , U, R(rd) = imm);
INSTPAT("??????? ????? ????? ??? ????? 00101 11", auipc , U, R(rd) = s->pc + imm);
INSTPAT("??????? ????? ????? ??? ????? 11011 11", jal , J, do_jump(s, rd, imm) );
INSTPAT("??????? ????? ????? ??? ????? 11001 11", jalr , I, do_jump(s, rd, imm) );
INSTPAT("??????? ????? ????? ??? ????? 11011 11", jal , J, do {s->dnpc = s->pc + imm; R(rd) = s->pc + 4; } while(0));
INSTPAT("??????? ????? ????? ??? ????? 11001 11", jalr , I, do {s->dnpc = s->pc + src1; R(rd) = s->pc + 4; } while(0));
INSTPAT("??????? ????? ????? 100 ????? 00000 11", lbu , I, R(rd) = Mr(src1 + imm, 1));
INSTPAT("??????? ????? ????? 000 ????? 01000 11", sb , S, Mw(src1 + imm, 1, src2));
INSTPAT("??????? ????? ????? 000 ????? 00100 11", addi , I, R(rd) = src1 + (sword_t)imm);