Skip to content

Commit f0d5ec4

Browse files
committed
add 'rd-' and 'wr-' 16, 32, and 64 instrs
1 parent 5a1d2a1 commit f0d5ec4

File tree

2 files changed

+50
-2
lines changed

2 files changed

+50
-2
lines changed

impl.h

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,4 +320,46 @@ DEF(wr8) {
320320
vmnext;
321321
}
322322

323+
DEF(rd16) {
324+
rvm_reg_t addr = rgB + imm15s;
325+
util_checkaccs(addr, 2);
326+
rgA = RVM_DEC16(&mem[addr]);
327+
vmnext;
328+
}
329+
330+
DEF(wr16) {
331+
rvm_reg_t addr = rgB + imm15s;
332+
util_checkaccs(addr, 2);
333+
RVM_ENC16(rgA, &mem[addr]);
334+
vmnext;
335+
}
336+
337+
DEF(rd32) {
338+
rvm_reg_t addr = rgB + imm15s;
339+
util_checkaccs(addr, 4);
340+
rgA = RVM_DEC32(&mem[addr]);
341+
vmnext;
342+
}
343+
344+
DEF(wr32) {
345+
rvm_reg_t addr = rgB + imm15s;
346+
util_checkaccs(addr, 4);
347+
RVM_ENC32(rgA, &mem[addr]);
348+
vmnext;
349+
}
350+
351+
DEF(rd64) {
352+
rvm_reg_t addr = rgB + imm15s;
353+
util_checkaccs(addr, 8);
354+
rgA = RVM_DEC64(&mem[addr]);
355+
vmnext;
356+
}
357+
358+
DEF(wr64) {
359+
rvm_reg_t addr = rgB + imm15s;
360+
util_checkaccs(addr, 8);
361+
RVM_ENC64(rgA, &mem[addr]);
362+
vmnext;
363+
}
364+
323365
#endif /* impl.h */

opcodes.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,13 @@ DEF(jge, 45) /* [J] jump if gt or eq */
6767
DEF(jae, 46) /* [J] jump if ab or eq */
6868
DEF(jle, 47) /* [J] jump if not-gt */
6969
DEF(jbe, 48) /* [J] jump if not-ab */
70-
DEF(rd8, 49) /* [I] rgA = mem[rgB + imm15s] */
71-
DEF(wr8, 50) /* [I] mem[rgB + imm15s] = rgA */
70+
DEF(rd8, 49) /* [I] 1B: rgA = mem[rgB + imm15s] */
71+
DEF(wr8, 50) /* [I] 1B: mem[rgB + imm15s] = rgA */
72+
DEF(rd16, 51) /* [I] 2B: rgA = mem[rgB + imm15s] */
73+
DEF(wr16, 52) /* [I] 2B: mem[rgB + imm15s] = rgA */
74+
DEF(rd32, 53) /* [I] 4B: rgA = mem[rgB + imm15s] */
75+
DEF(wr32, 54) /* [I] 4B: mem[rgB + imm15s] = rgA */
76+
DEF(rd64, 55) /* [I] 8B: rgA = mem[rgB + imm15s] */
77+
DEF(wr64, 56) /* [I] 8B: mem[rgB + imm15s] = rgA */
7278

7379
#endif /* opcodes.h */

0 commit comments

Comments
 (0)