Skip to content

Commit d852fd4

Browse files
committed
Add markers for start/end of ROM, RAM, ICACHE
1 parent 5c49d7c commit d852fd4

File tree

1 file changed

+79
-1
lines changed

1 file changed

+79
-1
lines changed

src/tools/registers.mlog

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ reset:
1818
set DISPLAY display1
1919

2020
read LOOKUP_PROC_SIZE CPU "LOOKUP_PROC_SIZE"
21+
read MEMORY_PROC_SIZE CPU "MEMORY_PROC_SIZE"
2122

2223
# wait until everything is properly initialized
2324
jump reset strictEqual CPU null
@@ -26,6 +27,7 @@ reset:
2627
jump reset strictEqual CSRS null
2728
jump reset strictEqual DISPLAY null
2829
jump reset strictEqual LOOKUP_PROC_SIZE null
30+
jump reset strictEqual MEMORY_PROC_SIZE null
2931

3032
set i -1
3133
reset__find_lookup_start:
@@ -69,6 +71,7 @@ reset__find_lookup_start:
6971
set CSR_INSTRETH variable
7072

7173
loop:
74+
set mark_ram_id 0
7275
draw clear 0 0 0
7376

7477
read x0_zero REGISTERS 0
@@ -132,6 +135,51 @@ loop:
132135
read decode_time DECODER "DECODE_DURATION"
133136
op floor decode_time decode_time
134137

138+
read MEMORY_X CPU "MEMORY_X"
139+
read MEMORY_Y CPU "MEMORY_Y"
140+
read MEMORY_WIDTH CPU "MEMORY_WIDTH"
141+
142+
read ROM_SIZE CPU "ROM_SIZE"
143+
read ROM_START CPU "ROM_START"
144+
read ROM_END CPU "ROM_END"
145+
146+
read RAM_START CPU "RAM_START"
147+
read RAM_END CPU "RAM_END"
148+
149+
op mul ICACHE_SIZE ROM_SIZE 4
150+
set ICACHE_START RAM_END
151+
op add ICACHE_END ICACHE_START ICACHE_SIZE
152+
153+
print "ROM_START\n{0}"
154+
set address ROM_START
155+
op add ret @counter 1
156+
jump mark_ram always
157+
158+
print "ROM_END\n{0}"
159+
op sub address ROM_END 1
160+
op add ret @counter 1
161+
jump mark_ram always
162+
163+
print "RAM_START\n{0}"
164+
set address RAM_START
165+
op add ret @counter 1
166+
jump mark_ram always
167+
168+
print "RAM_END\n{0}"
169+
op sub address RAM_END 1
170+
op add ret @counter 1
171+
jump mark_ram always
172+
173+
print "ICACHE_START\n{0}"
174+
set address ICACHE_START
175+
op add ret @counter 1
176+
jump mark_ram always
177+
178+
print "ICACHE_END\n{0}"
179+
op sub address ICACHE_END 1
180+
op add ret @counter 1
181+
jump mark_ram always
182+
135183
print "x0_zero = {0}\n"
136184
set n x0_zero
137185
op add ret @counter 1
@@ -347,7 +395,7 @@ loop:
347395
draw print 256 508 topLeft
348396
drawflush DISPLAY
349397

350-
wait 0.02
398+
wait 0.025
351399
jump loop always
352400

353401
format_hex:
@@ -477,3 +525,33 @@ access_csr:
477525
read variable _lookup variable
478526

479527
set @counter ret
528+
529+
# creates a marker on the ram proc containing a given address
530+
# the caller should print a format string with a placeholder for the address
531+
# address ->
532+
mark_ram:
533+
set mark_ram__ret ret
534+
535+
# we store 4 bytes in each value
536+
op idiv _address address 4
537+
538+
# get the ram proc containing this address
539+
op idiv _ram_index _address MEMORY_PROC_SIZE
540+
541+
op mod _ram_x _ram_index MEMORY_WIDTH
542+
op add _ram_x _ram_x MEMORY_X
543+
544+
op idiv _ram_y _ram_index MEMORY_WIDTH
545+
op add _ram_y _ram_y MEMORY_Y
546+
547+
set n address
548+
op add ret @counter 1
549+
jump format_hex always
550+
551+
setmarker remove mark_ram_id
552+
makemarker shapeText mark_ram_id _ram_x _ram_y false
553+
setmarker shape 0 4 0 0
554+
setmarker flushText mark_ram_id false
555+
556+
op add mark_ram_id mark_ram_id 1
557+
set @counter mark_ram__ret

0 commit comments

Comments
 (0)