hoglet67 / PiTubeDirect

Bare-metal Raspberry Pi project that attaches to the Acorn TUBE interface and emulates many BBC Micro Co Processors
GNU General Public License v3.0
187 stars 23 forks source link

RISC-V Co Pro: Disassembler improvements #195

Closed hoglet67 closed 11 months ago

hoglet67 commented 12 months ago

Here's my ATEST2B example:

00010fe0 00ac08b7 lui      a7, 00ac0000
00010fe4 00e88893 addi     a7, a7, 14
00010fe8 ff900513 addi     a0, zero, -7
00010fec 000115b7 lui      a1, 00011000
00010ff0 00c58593 addi     a1, a1, 12
00010ff4 00000613 addi     a2, zero, 0
00010ff8 00000073 ecall    zero, zero, 0
00010ffc 00000297 auipc    t0, 00000000
00011000 00b2a623 sw       a1, 12(t0)
00011004 00008067 jalr     zero, ra, 0
00011008 00fc0c7c ???      ?, ?, ?
0001100c ff010113 addi     sp, sp, -16
00011010 00512023 sw       t0, 0(sp)
00011014 00612223 sw       t1, 4(sp)
00011018 342022f3 csrrs    t0, zero, 834
0001101c 00200313 addi     t1, zero, 2
00011020 04629263 bne      t0, t1, 00011064
00011024 341022f3 csrrs    t0, zero, 833
00011028 0002a283 lw       t0, 0(t0)
0001102c 07f00313 addi     t1, zero, 127
00011030 0062f2b3 and      t0, t0, t1
00011034 07700313 addi     t1, zero, 119
00011038 02629663 bne      t0, t1, 00011064
0001103c 123450b7 lui      ra, 12345000
00011040 67808093 addi     ra, ra, 1656
00011044 341022f3 csrrs    t0, zero, 833
00011048 00428293 addi     t0, t0, 4
0001104c 34129073 csrrw    zero, t0, 833
00011050 01010113 addi     sp, sp, 16
00011054 00012283 lw       t0, 0(sp)
00011058 00412283 lw       t0, 4(sp)
0001105c 01010113 addi     sp, sp, 16
00011060 30200073 mret     zero, zero, 770
00011064 00012283 lw       t0, 0(sp)
00011068 00412303 lw       t1, 4(sp)
0001106c 01010113 addi     sp, sp, 16
00011070 00000297 auipc    t0, 00000000
00011074 f982a283 lw       t0, -104(t0)
00011078 00028067 jalr     zero, t0, 0
0001107c ff010113 addi     sp, sp, -16
00011080 00112023 sw       ra, 0(sp)
00011084 00000077 ???      ?, ?, ?
00011088 00008513 addi     a0, ra, 0
0001108c 00012083 lw       ra, 0(sp)
00011090 01010113 addi     sp, sp, 16
00011094 00008067 jalr     zero, ra, 0

It would be nice to include the symbolic csr names

Base is inconsistent:

0001103c 123450b7 lui      ra, 12345000
00011040 67808093 addi     ra, ra, 1656

ECALL and MRET should have no parameters.

Consider decoding CSRR/CSRW pseudo instructions.