函数调用 完成

main
阳光少年 6 months ago
parent 48e5eb0d3a
commit 63c6cce181

@ -31,38 +31,38 @@ v3.0 hex words addressed
00e8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 00e8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000
00f0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 00f0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000
00f8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 00f8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000
0100: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 0100: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
0108: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 0108: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
0110: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 0110: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
0118: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 0118: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
0120: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 0120: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
0128: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 0128: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
0130: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 0130: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
0138: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 0138: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
0140: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 0140: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
0148: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 0148: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
0150: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 0150: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
0158: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 0158: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
0160: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 0160: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
0168: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 0168: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
0170: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 0170: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
0178: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 0178: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
0180: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 0180: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
0188: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 0188: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
0190: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 0190: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
0198: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 0198: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
01a0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 01a0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
01a8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 01a8: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
01b0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 01b0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
01b8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 01b8: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
01c0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 01c0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
01c8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 01c8: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
01d0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 01d0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
01d8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 01d8: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
01e0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 01e0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
01e8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 01e8: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
01f0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 01f0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000004e 00000032
01f8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 01f8: 0000c004 0000010e 001401c0 00000030 40000000 40000000 40000000 40000000
0200: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 0200: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000
0208: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 0208: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000
0210: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 0210: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000
@ -3583,70 +3583,70 @@ v3.0 hex words addressed
6fe8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 6fe8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000
6ff0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 6ff0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000
6ff8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 6ff8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000
7000: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7000: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7008: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7008: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
7010: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7010: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7018: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7018: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
7020: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7020: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7028: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7028: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
7030: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7030: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7038: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7038: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
7040: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7040: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7048: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7048: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
7050: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7050: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7058: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7058: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
7060: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7060: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7068: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7068: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
7070: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7070: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7078: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7078: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
7080: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7080: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7088: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7088: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
7090: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7090: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7098: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7098: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
70a0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 70a0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
70a8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 70a8: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
70b0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 70b0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
70b8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 70b8: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
70c0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 70c0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
70c8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 70c8: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
70d0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 70d0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
70d8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 70d8: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
70e0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 70e0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
70e8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 70e8: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
70f0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 70f0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
70f8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 70f8: 0000004e 00000032 00008080 0000c006 00000030 40000000 40000000 40000000
7100: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7100: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7108: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7108: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
7110: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7110: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7118: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7118: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
7120: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7120: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7128: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7128: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
7130: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7130: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7138: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7138: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
7140: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7140: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7148: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7148: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
7150: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7150: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7158: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7158: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
7160: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7160: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7168: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7168: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
7170: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7170: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7178: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7178: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
7180: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7180: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7188: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7188: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
7190: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7190: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
7198: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7198: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
71a0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 71a0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
71a8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 71a8: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
71b0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 71b0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
71b8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 71b8: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
71c0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 71c0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
71c8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 71c8: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
71d0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 71d0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
71d8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 71d8: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
71e0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 71e0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
71e8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 71e8: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
71f0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 71f0: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 0000010e 001601c0
71f8: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 71f8: 0000004e 00000032 00008080 00001000 0000c000 00000030 40000000 40000000
7200: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7200: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000
7208: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 7208: 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000
7210: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000 7210: 00008040 0001c0a4 00008040 0001c0c4 00008040 0001c0e4 40000000 40000000

@ -20,7 +20,6 @@ AND = 4 << pin.ADDR_2_SHIFT | pin.ADDR_2
OR = 5 << pin.ADDR_2_SHIFT | pin.ADDR_2 OR = 5 << pin.ADDR_2_SHIFT | pin.ADDR_2
XOR = 6 << pin.ADDR_2_SHIFT | pin.ADDR_2 XOR = 6 << pin.ADDR_2_SHIFT | pin.ADDR_2
INC = 0 << pin.ADDR_1_SHIFT | pin.ADDR_1 INC = 0 << pin.ADDR_1_SHIFT | pin.ADDR_1
DEC = 1 << pin.ADDR_1_SHIFT | pin.ADDR_1 DEC = 1 << pin.ADDR_1_SHIFT | pin.ADDR_1
NOT = 2 << pin.ADDR_1_SHIFT | pin.ADDR_1 NOT = 2 << pin.ADDR_1_SHIFT | pin.ADDR_1
@ -36,8 +35,11 @@ JNP = 9 << pin.ADDR_1_SHIFT | pin.ADDR_1 # 偶数跳转
PUSH = 10 << pin.ADDR_1_SHIFT | pin.ADDR_1 PUSH = 10 << pin.ADDR_1_SHIFT | pin.ADDR_1
POP = 11 << pin.ADDR_1_SHIFT | pin.ADDR_1 POP = 11 << pin.ADDR_1_SHIFT | pin.ADDR_1
CALL = 12 << pin.ADDR_1_SHIFT | pin.ADDR_1
NOP = 0b0 NOP = 0b0
RET = 0b1
HLT = 0b11_1111 HLT = 0b11_1111
@ -277,7 +279,6 @@ INSTRUCTIONS = {
}, },
POP: { POP: {
pin.AM_REG: [ # pop d pin.AM_REG: [ # pop d
# 修改段地址和偏移地址 # 修改段地址和偏移地址
pin.SP_OUT | pin.MAR_IN, pin.SP_OUT | pin.MAR_IN,
pin.SS_OUT | pin.MSR_IN, pin.SS_OUT | pin.MSR_IN,
@ -290,9 +291,43 @@ INSTRUCTIONS = {
# 恢复 msr # 恢复 msr
pin.CS_OUT | pin.MSR_IN, pin.CS_OUT | pin.MSR_IN,
]
},
CALL: {
pin.AM_INS: [ # call 0x5
# 先把当前pc压栈
pin.SP_OUT | pin.A_IN,
pin.OP_DEC | pin.ALU_OUT | pin.SP_IN, # sp减去1回写到sp
pin.SP_OUT | pin.MAR_IN, # 修改 mar偏移寄存器
# 修改 msr段地址寄存器
pin.SS_OUT | pin.MSR_IN,
# 根据 msr段地址 和mar偏移地址 控制内存写, 把当前PC 压栈
pin.RAM_IN | pin.PC_OUT,
# 修改PC为 DST
pin.DST_OUT | pin.PC_IN,
# 修改msr即可, mar会被pc修改
pin.MSR_IN | pin.CS_OUT,
],
pin.AM_REG: [ # call b
pin.SP_OUT | pin.A_IN,
pin.OP_DEC | pin.ALU_OUT | pin.SP_IN,
pin.SP_OUT | pin.MAR_IN,
# 修改 msr段地址寄存器
pin.SS_OUT | pin.MSR_IN,
# 当前pc压栈
pin.RAM_IN | pin.PC_OUT,
# 修改PC为 DST
pin.DST_R, pin.PC_IN,
pin.MSR_IN | pin.CS_OUT,
] ]
} },
}, },
0: { 0: {
NOP: [ NOP: [
@ -300,6 +335,22 @@ INSTRUCTIONS = {
], ],
HLT: [ HLT: [
pin.HLT, pin.HLT,
],
RET: [
# 修改段地址和偏移地址
pin.SP_OUT | pin.MAR_IN,
pin.SS_OUT | pin.MSR_IN,
# 直接把栈顶的值读到PC(这个值保存的事call的时候, PC的值)
pin.RAM_OUT | pin.PC_IN,
# 对sp增加1
pin.SP_OUT | pin.A_IN,
pin.OP_INC | pin.ALU_OUT | pin.SP_IN,
# 恢复 msr
pin.CS_OUT | pin.MSR_IN,
] ]
} }
} }

@ -38,11 +38,13 @@ OP1_STR_MAP = {
"jnp": ASM.JNP, "jnp": ASM.JNP,
"push": ASM.PUSH, "push": ASM.PUSH,
"pop": ASM.POP, "pop": ASM.POP,
"call": ASM.CALL,
} }
OP0_STR_MAP = { OP0_STR_MAP = {
"nop": ASM.NOP, "nop": ASM.NOP,
"hlt": ASM.HLT, "hlt": ASM.HLT,
"ret": ASM.RET,
} }
OP2_VALUE_SET = set(OP2_STR_MAP.values()) OP2_VALUE_SET = set(OP2_STR_MAP.values())

@ -3855,7 +3855,7 @@
<a name="circuit" val="P_26_2"/> <a name="circuit" val="P_26_2"/>
<a name="circuitnamedboxfixedsize" val="true"/> <a name="circuitnamedboxfixedsize" val="true"/>
<a name="downloadFrequency" val="1.0"/> <a name="downloadFrequency" val="1.0"/>
<a name="simulationFrequency" val="32.0"/> <a name="simulationFrequency" val="8.0"/>
<comp lib="0" loc="(1000,450)" name="Probe"> <comp lib="0" loc="(1000,450)" name="Probe">
<a name="appearance" val="NewPins"/> <a name="appearance" val="NewPins"/>
</comp> </comp>
@ -4043,20 +4043,32 @@
8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040
1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4
10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 8040 1c0a4 8040 1c0c4 8040 1c0e4 4e 32
1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 c004 10e 1401c0 30 4*40000000 8040 1c0a4 8040
8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 4e 32 c004 10e 1401c0
1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 30 4*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4
8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 4e 32 c004 10e 1401c0 30 4*40000000 8040
1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 1c0a4 8040 1c0c4 8040 1c0e4 4e 32 c004
10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 10e 1401c0 30 4*40000000 8040 1c0a4 8040 1c0c4
8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 8040 1c0e4 4e 32 c004 10e 1401c0 30
1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 4*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 4e
8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 32 c004 10e 1401c0 30 4*40000000 8040 1c0a4
1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0c4 8040 1c0e4 4e 32 c004 10e
8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1401c0 30 4*40000000 8040 1c0a4 8040 1c0c4 8040
1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 1c0e4 4e 32 c004 10e 1401c0 30 4*40000000
10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 4e 32
c004 10e 1401c0 30 4*40000000 8040 1c0a4 8040
1c0c4 8040 1c0e4 4e 32 c004 10e 1401c0
30 4*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4
4e 32 c004 10e 1401c0 30 4*40000000 8040
1c0a4 8040 1c0c4 8040 1c0e4 4e 32 c004
10e 1401c0 30 4*40000000 8040 1c0a4 8040 1c0c4
8040 1c0e4 4e 32 c004 10e 1401c0 30
4*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 4e
32 c004 10e 1401c0 30 4*40000000 8040 1c0a4
8040 1c0c4 8040 1c0e4 4e 32 c004 10e
1401c0 30 4*40000000 8040 1c0a4 8040 1c0c4 8040
1c0e4 4e 32 c004 10e 1401c0 30 4*40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040
1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4
8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040
@ -5655,34 +5667,70 @@ c006 9*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4
8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040
1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4
10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 4e 32 8080 c006 30 40000000 40000000 40000000
8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 4e 32 8080 c006 30 40000000 40000000 40000000
8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 4e 32 8080 c006 30 40000000 40000000 40000000
10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 4e 32 8080 c006 30 40000000 40000000 40000000
1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 4e 32 8080 c006 30 40000000 40000000 40000000
1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 4e 32 8080 c006 30 40000000 40000000 40000000
1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 4e 32 8080 c006 30 40000000 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 4e 32 8080 c006 30 40000000 40000000 40000000
8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 4e 32 8080 c006 30 40000000 40000000 40000000
8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 4e 32 8080 c006 30 40000000 40000000 40000000
10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 4e 32 8080 c006 30 40000000 40000000 40000000
1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 4e 32 8080 c006 30 40000000 40000000 40000000
1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
8040 1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 4e 32 8080 c006 30 40000000 40000000 40000000
1c0e4 10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
10*40000000 8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 4e 32 8080 c006 30 40000000 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 c006 30 40000000 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 c006 30 40000000 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10e 1601c0
4e 32 8080 1000 c000 30 40000000 40000000
8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 8040 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040
1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 1c0a4 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4
8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040 8040 1c0c4 8040 1c0e4 10*40000000 8040 1c0a4 8040

@ -1,6 +1,8 @@
v3.0 hex words addressed v3.0 hex words addressed
0000: 84 12 01 84 0e 10 84 0a 0000: 84 12 01 84 0e 10 4c 1e
0008: f9 84 0b 9f 69 0a 00 69 0008: 00 84 0b 10 01 00 00 41
0010: 0b 00 6d 0a 00 6d 0b 00 0010: 0b 00 b4 0b 15 58 1b 00
0018: 68 10 00 68 01 00 3f 00 0018: 4c 0f 00 01 00 00 70 09
0020: 00 3f 00 00 0020: 00 70 0f 00 68 f0 00 68
0028: f1 00 68 f2 00 68 f3 00
0030: 3f 00 00 3f 00 00

@ -1,28 +1,30 @@
; 测试的代码
;mov a, 0x0f ; 写入0x0f到A寄存器
;mov d, a
;mov a, [0x05]
;mov b, [a]
;nop
mov ss, 1
mov sp, 0x10 ; 从 0x00 ~ 0xf 是栈的空间 0x10 - 1 = 0xf
jmp start
; mov [0x0], 0xff init_d:
mov d, 0x10
ret
;mov a, 0xff increase_d:
;mov [0x0], a inc d
cmp d, 0x15
jz increase_d_end
jmp increase_d
; 栈测试 increase_d_end:
mov ss, 1 ret
mov sp, 0x10 ; 从 0x00 ~ 0x09 是栈的空间
start:
call init_d
call increase_d
mov c, 0xf9 ; 下面是查看栈是否回归正常
mov d, 0x9f push 0xf0
push c push 0xf1
push d push 0xf2
pop c push 0xf3
pop d
push 0x10 ; 现在栈应该被下面俩覆盖了, 且c和d交换位置了
push 0x01
hlt hlt

Loading…
Cancel
Save