1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta content="text/html; charset=ISO-8859-2" http-equiv="content-type">
<title>µCsim: Code Analyser</title>
</head>
<body bgcolor="white">
<h1>Code analyser</h1>
<p>The code analyser analyses the memory of the simulated microprocessor and
tries to figure out which address contains valid instruction.</p>
<p>The analyser starts from the known hardware vectors (reset, IRQs etc.)
and follows the possible execution paths through jumps, branches and
calls marking data as code and adding variables as necessary. Execution
paths that are indirect, indexed or otherwise computed are not followed
initially but will be analysed when, or if, execution reaches them.</p>
<p>If code is known to exist elsewhere in memory and is not reachable
without being run explicitly (such as by the "<code>run <i>addr</i></code>"
command) you can use "<code>analyse <i>addr</i></code>" to ask the analyser
to look there. This is not persistent however. Whenever data is loaded
or "<code>analyse</code>" run with no <i>addr</i> argument all the analyser
state is reset and recreated from the known vectors so any explicit
"<code>analyse <i>addr</i></code>" needs to be rerun if required.</p>
<p>Variables created by the analyser always start with a dot. Such variables
cannot be created by the "<code>var</code>" command and are not listed by
"<code>info var</code>" (although can be using "<code>info var .</code>") but
otherwise work like any other variable with one exception. If you create
a new variable for the exact same memory location the analyser's variable
will be silently removed.</p>
<pre>0> <font color="#118811">dump .loop$21</font>
0x081f8 <.loop$21>:
0x081f8 d6 81 da ld A,(0x81da <.bit0_isset$19>,X)
0x081fb d7 00 3d ld (0x003d,X),A
0x081fe 5a decw X
0x081ff 26 f7 jrne 0x81f8 <.loop$21>
0> <font color="#118811">var copy_data .loop$21</font>
0> <font color="#118811">dump .loop$21</font>
dump [/format] memory_type [start [stop [bytes_per_line]]] | dump bit...
Dump memory of specified type or bit(s)
0> <font color="#118811">dump copy_data</font>
0x081f8 <copy_data>:
0x081f8 d6 81 da ld A,(0x81da <.bit0_isset$19>,X)
0x081fb d7 00 3d ld (0x003d,X),A
0x081fe 5a decw X
0x081ff 26 f7 jrne 0x81f8 <copy_data>
</pre>
<hr>
</body>
</html>
|