author | Jan Vrany <jan.vrany@labware.com> |
Fri, 08 Sep 2023 12:40:22 +0100 | |
changeset 317 | 7f63737e0374 |
parent 316 | 7cc3798b2ff7 |
child 322 | 1b26d0a9560c |
permissions | -rw-r--r-- |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
jv:libgdbs - GNU Debugger Interface Library |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
Copyright (C) 2015-now Jan Vrany |
272
cdd1c9ad00de
Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents:
259
diff
changeset
|
4 |
Copyright (C) 2021-2023 LabWare |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
|
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
6 |
Permission is hereby granted, free of charge, to any person obtaining a copy |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
7 |
of this software and associated documentation files (the 'Software'), to deal |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
8 |
in the Software without restriction, including without limitation the rights |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
9 |
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
10 |
copies of the Software, and to permit persons to whom the Software is |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
11 |
furnished to do so, subject to the following conditions: |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
|
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
13 |
The above copyright notice and this permission notice shall be included in all |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
14 |
copies or substantial portions of the Software. |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
|
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
16 |
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
17 |
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
18 |
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
19 |
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
20 |
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
21 |
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
22 |
SOFTWARE. |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
"{ Package: 'jv:libgdbs' }" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
"{ NameSpace: Smalltalk }" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
GDBDebuggerObject subclass:#GDBRegisterWithValue |
251
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
29 |
instanceVariableNames:'register frame valueString value changed previous' |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
classVariableNames:'' |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
poolDictionaries:'' |
272
cdd1c9ad00de
Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents:
259
diff
changeset
|
32 |
category:'GDB' |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
!GDBRegisterWithValue class methodsFor:'documentation'! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
copyright |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
jv:libgdbs - GNU Debugger Interface Library |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
Copyright (C) 2015-now Jan Vrany |
272
cdd1c9ad00de
Change class categories to facilitate Pharo port
Jan Vrany <jan.vrany@labware.com>
parents:
259
diff
changeset
|
41 |
Copyright (C) 2021-2023 LabWare |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
42 |
|
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
43 |
Permission is hereby granted, free of charge, to any person obtaining a copy |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
44 |
of this software and associated documentation files (the 'Software'), to deal |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
45 |
in the Software without restriction, including without limitation the rights |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
46 |
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
47 |
copies of the Software, and to permit persons to whom the Software is |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
48 |
furnished to do so, subject to the following conditions: |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
|
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
50 |
The above copyright notice and this permission notice shall be included in all |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
51 |
copies or substantial portions of the Software. |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
|
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
53 |
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
54 |
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
55 |
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
56 |
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
57 |
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
58 |
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
254
diff
changeset
|
59 |
SOFTWARE. |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
! ! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
63 |
!GDBRegisterWithValue class methodsFor:'accessing-magritte'! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
64 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
65 |
descriptionContainer |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
66 |
^ super descriptionContainer |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
67 |
define: #number as: Integer; |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
68 |
define: #value as: String; |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
69 |
yourself |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
70 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
"Created: / 26-09-2018 / 10:38:29 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
72 |
! ! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
!GDBRegisterWithValue methodsFor:'accessing'! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
75 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
76 |
name |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
^ register name |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
78 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
79 |
"Created: / 27-09-2018 / 10:06:32 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
80 |
! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
81 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
82 |
number |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
83 |
^ register isInteger ifTrue:[ |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
84 |
register |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
85 |
] ifFalse:[ |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
86 |
register number |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
87 |
] |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
88 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
89 |
"Created: / 27-09-2018 / 09:56:09 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
90 |
! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
91 |
|
225
8bafbf291261
Add `GDBRegisterWithValue >> #register`
Jan Vrany <jan.vrany@labware.com>
parents:
144
diff
changeset
|
92 |
register |
8bafbf291261
Add `GDBRegisterWithValue >> #register`
Jan Vrany <jan.vrany@labware.com>
parents:
144
diff
changeset
|
93 |
"Return the register definition of this register (as GDBRegister)" |
8bafbf291261
Add `GDBRegisterWithValue >> #register`
Jan Vrany <jan.vrany@labware.com>
parents:
144
diff
changeset
|
94 |
^ register |
8bafbf291261
Add `GDBRegisterWithValue >> #register`
Jan Vrany <jan.vrany@labware.com>
parents:
144
diff
changeset
|
95 |
|
8bafbf291261
Add `GDBRegisterWithValue >> #register`
Jan Vrany <jan.vrany@labware.com>
parents:
144
diff
changeset
|
96 |
"Modified (comment): / 24-03-2021 / 15:13:22 / Jan Vrany <jan.vrany@labware.com>" |
8bafbf291261
Add `GDBRegisterWithValue >> #register`
Jan Vrany <jan.vrany@labware.com>
parents:
144
diff
changeset
|
97 |
! |
8bafbf291261
Add `GDBRegisterWithValue >> #register`
Jan Vrany <jan.vrany@labware.com>
parents:
144
diff
changeset
|
98 |
|
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
99 |
value |
237
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
100 |
"Return the value of the register. The returned value is either |
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
101 |
|
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
102 |
* an integer in case the register is integer register - GPRs and so on) |
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
103 |
* a dictionary in case of 'composite' registers - for example a value |
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
104 |
of FPR might be returned as '{float = 0xABCDDCBA, double = 0xA...B}' |
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
105 |
Similarly for vector registers (SSE / SSE2 regs on x86, VSRs on POWER) |
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
106 |
" |
254
6f3a6ee16a4a
Check for register changes in `GDBRegisterWithValue >> #value`
Jan Vrany <jan.vrany@labware.com>
parents:
251
diff
changeset
|
107 |
(value isNil or:[changed value]) ifTrue: [ |
238
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
108 |
value := (GDBMIParser on: self valueString) parseValue. |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
109 |
"/ Sigh, we do now know the 'type' of the register (that is, |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
110 |
"/ GPR, FPR, SPR or some other kind. We do not even know the bitsize. |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
111 |
"/ Still, it is kinda handy to intepret GPRs as signed value. |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
112 |
"/ |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
113 |
"/ However, #parseValue returns it as unsigned value, so we make |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
114 |
"/ some guesses based on unsigned value. |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
115 |
"/ |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
116 |
"/ First, assume it is 64bit unsigned value... |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
117 |
(value between: 16r8000000000000000 and: 16rFFFFFFFFFFFFFFFF) ifTrue: [ |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
118 |
value := (value bitAnd:16rFFFFFFFFFFFFFFFF)-16r10000000000000000 |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
119 |
] ifFalse: [ |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
120 |
"/ ...then assume it is 32bit value... |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
121 |
(valueString size == (2+8) and:[value between: 16r80000000 and: 16rFFFFFFFF]) ifTrue: [ |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
122 |
value := (value bitAnd:16rFFFFFFFF)-16r100000000 |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
123 |
]. |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
124 |
]. |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
125 |
]. |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
126 |
^ value |
237
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
127 |
|
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
128 |
"Modified: / 27-09-2018 / 15:26:50 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
254
6f3a6ee16a4a
Check for register changes in `GDBRegisterWithValue >> #value`
Jan Vrany <jan.vrany@labware.com>
parents:
251
diff
changeset
|
129 |
"Modified: / 24-01-2022 / 16:22:39 / Jan Vrany <jan.vrany@labware.com>" |
238
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
130 |
! |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
131 |
|
316
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
132 |
value: anObject |
238
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
133 |
"Set the value of register. Currently this is limited to integer registers |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
134 |
only." |
316
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
135 |
|
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
136 |
self value isInteger ifFalse: [ |
238
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
137 |
self error: 'Compound values not supported'. |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
138 |
]. |
248
9f09de962169
When setting register value, invalidate only register that has changed
Jan Vrany <jan.vrany@labware.com>
parents:
238
diff
changeset
|
139 |
debugger |
316
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
140 |
send: (GDBMI_data_evaluate_expression arguments: (Array |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
141 |
with: '--thread' |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
142 |
with: frame thread id |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
143 |
with: '--frame' |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
144 |
with: frame level |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
145 |
with: ('$' , register name , ' = ' , (anObject asInteger printString)))) |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
146 |
andWithResultDo: [:result | |
248
9f09de962169
When setting register value, invalidate only register that has changed
Jan Vrany <jan.vrany@labware.com>
parents:
238
diff
changeset
|
147 |
result isDone ifTrue: [ |
9f09de962169
When setting register value, invalidate only register that has changed
Jan Vrany <jan.vrany@labware.com>
parents:
238
diff
changeset
|
148 |
frame invalidate: self. |
9f09de962169
When setting register value, invalidate only register that has changed
Jan Vrany <jan.vrany@labware.com>
parents:
238
diff
changeset
|
149 |
changed value: true. |
316
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
150 |
debugger push: (GDBRegisterChangedEvent new setRegister: self) |
248
9f09de962169
When setting register value, invalidate only register that has changed
Jan Vrany <jan.vrany@labware.com>
parents:
238
diff
changeset
|
151 |
]. |
9f09de962169
When setting register value, invalidate only register that has changed
Jan Vrany <jan.vrany@labware.com>
parents:
238
diff
changeset
|
152 |
]. |
238
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
153 |
|
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
154 |
"Created: / 10-09-2021 / 15:31:35 / Jan Vrany <jan.vrany@labware.com>" |
248
9f09de962169
When setting register value, invalidate only register that has changed
Jan Vrany <jan.vrany@labware.com>
parents:
238
diff
changeset
|
155 |
"Modified: / 18-11-2021 / 12:13:34 / Jan Vrany <jan.vrany@labware.com>" |
237
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
156 |
! |
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
157 |
|
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
158 |
valueString |
238
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
159 |
valueString isNil ifTrue: [ |
316
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
160 |
| result registers | |
248
9f09de962169
When setting register value, invalidate only register that has changed
Jan Vrany <jan.vrany@labware.com>
parents:
238
diff
changeset
|
161 |
|
251
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
162 |
frame isValid ifTrue: [ |
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
163 |
[ |
316
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
164 |
result := debugger |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
165 |
send: (GDBMI_data_list_register_values new arguments: (Array |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
166 |
with: '--thread' |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
167 |
with: frame thread id |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
168 |
with: '--frame' |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
169 |
with: frame level |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
170 |
with: 'r' |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
171 |
with: register number)). |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
172 |
registers := result propertyAt: #'register-values'. |
251
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
173 |
self assert: registers size == 1. |
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
174 |
self assert: registers first register = register number. |
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
175 |
valueString := registers first valueString. |
316
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
176 |
] on: GDBCommandFailedError do: [:ex | valueString := ex description. ]. |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
177 |
] ifFalse: [ |
251
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
178 |
valueString := 'invalid frame'. |
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
179 |
]. |
316
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
180 |
(previous notNil and: [ previous ~= valueString ]) ifTrue: [ |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
181 |
changed value: true. |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
182 |
debugger push: (GDBRegisterChangedEvent new setRegister: self) |
7cc3798b2ff7
Rename `GDBRegisterValueChangedEvent` to `GDBRegisterChangedEvent`
Jan Vrany <jan.vrany@labware.com>
parents:
315
diff
changeset
|
183 |
]. |
237
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
184 |
] ifFalse: [ |
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
185 |
changed value. |
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
186 |
]. |
238
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
187 |
^ valueString |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
188 |
|
237
81a18c404314
Change `GDBRegisterWithValue >> #value` to return numeric value
Jan Vrany <jan.vrany@labware.com>
parents:
225
diff
changeset
|
189 |
"Created: / 10-09-2021 / 14:14:14 / Jan Vrany <jan.vrany@labware.com>" |
251
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
190 |
"Modified: / 18-11-2021 / 18:03:18 / Jan Vrany <jan.vrany@labware.com>" |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
191 |
! ! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
192 |
|
315
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
193 |
!GDBRegisterWithValue methodsFor:'displaying'! |
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
194 |
|
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
195 |
displayOn: aStream |
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
196 |
| name | |
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
197 |
|
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
198 |
name := register name isString |
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
199 |
ifTrue: [ register name ] |
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
200 |
ifFalse:[ register printString ]. |
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
201 |
aStream nextPutAll: name. |
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
202 |
aStream next: 10 - name size put: Character space. |
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
203 |
aStream nextPutAll: self valueString. |
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
204 |
|
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
205 |
"Created: / 01-09-2023 / 23:11:40 / Jan Vrany <jan.vrany@labware.com>" |
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
206 |
! ! |
91819b724b59
Add inspector tabs showing breakpoints, inferiors, ...
Jan Vrany <jan.vrany@labware.com>
parents:
272
diff
changeset
|
207 |
|
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
208 |
!GDBRegisterWithValue methodsFor:'initialization'! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
209 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
210 |
setDebugger: aGDBDebugger |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
211 |
super setDebugger: aGDBDebugger. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
212 |
changed := GDBTransientDataHolder debugger: debugger factory: [ |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
213 |
(frame notNil and:[frame isValid]) ifTrue:[ |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
214 |
| changes change | |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
215 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
216 |
changes := frame registersChanges. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
217 |
change := changes detect:[:each | each number = self number ] ifNone:[ nil ]. |
251
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
218 |
(change notNil and:[change valueString ~= valueString]) ifTrue:[ |
248
9f09de962169
When setting register value, invalidate only register that has changed
Jan Vrany <jan.vrany@labware.com>
parents:
238
diff
changeset
|
219 |
valueString := change valueString. |
9f09de962169
When setting register value, invalidate only register that has changed
Jan Vrany <jan.vrany@labware.com>
parents:
238
diff
changeset
|
220 |
value := nil. |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
221 |
true |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
222 |
] ifFalse:[ |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
223 |
false |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
224 |
]. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
225 |
] ifFalse:[ |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
226 |
false |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
227 |
]. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
228 |
]. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
229 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
230 |
"Created: / 27-09-2018 / 15:11:35 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
251
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
231 |
"Modified: / 18-11-2021 / 17:19:20 / Jan Vrany <jan.vrany@labware.com>" |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
232 |
! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
233 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
234 |
setFrame: aGDBFrame |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
235 |
self setDebugger: aGDBFrame debugger. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
236 |
frame := aGDBFrame. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
237 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
238 |
"Created: / 26-09-2018 / 22:25:39 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
239 |
"Modified: / 27-09-2018 / 15:31:36 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
240 |
! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
241 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
242 |
setRegisterFrom: aDictionary |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
243 |
self assert: register isInteger. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
244 |
self assert: (aDictionary includesKey: register). |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
245 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
246 |
register := aDictionary at: register. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
247 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
248 |
"Created: / 26-09-2018 / 10:41:47 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
249 |
! ! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
250 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
251 |
!GDBRegisterWithValue methodsFor:'printing & storing'! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
252 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
253 |
printOn:aStream |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
254 |
"append a printed representation of the receiver to the argument, aStream" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
255 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
256 |
super printOn:aStream. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
257 |
aStream nextPut:$(. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
258 |
register isInteger ifTrue:[ |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
259 |
register printOn:aStream. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
260 |
] ifFalse:[ |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
261 |
register name printOn:aStream. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
262 |
]. |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
263 |
aStream nextPutAll: ': '. |
238
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
264 |
valueString printOn: aStream. |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
265 |
aStream nextPut:$). |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
266 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
267 |
"Modified: / 26-09-2018 / 10:48:31 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
268 |
! ! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
269 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
270 |
!GDBRegisterWithValue methodsFor:'private'! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
271 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
272 |
_number: anInteger |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
273 |
register := anInteger |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
274 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
275 |
"Created: / 26-09-2018 / 10:39:14 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
238
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
276 |
! |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
277 |
|
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
278 |
_value: aString |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
279 |
valueString := aString |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
280 |
|
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
281 |
"Created: / 10-09-2021 / 15:43:04 / Jan Vrany <jan.vrany@labware.com>" |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
282 |
! |
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
283 |
|
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
284 |
invalidate |
251
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
285 |
valueString notNil ifTrue: [ |
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
286 |
changed notNil ifTrue: [ changed invalidate ]. |
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
287 |
previous := valueString. |
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
288 |
valueString := nil. |
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
289 |
value := nil. |
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
290 |
]. |
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
291 |
|
238
bdf011a6482b
Allow to set register value using via `GDBRegisterWithValue >> #value:`
Jan Vrany <jan.vrany@labware.com>
parents:
237
diff
changeset
|
292 |
"Created: / 10-09-2021 / 15:37:58 / Jan Vrany <jan.vrany@labware.com>" |
251
e34f610942df
Experimental improvement of tracking register changes
Jan Vrany <jan.vrany@labware.com>
parents:
249
diff
changeset
|
293 |
"Modified: / 18-11-2021 / 17:48:07 / Jan Vrany <jan.vrany@labware.com>" |
144
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
294 |
! ! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
295 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
296 |
!GDBRegisterWithValue methodsFor:'queries'! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
297 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
298 |
hasChanged |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
299 |
"Return true, if the value of this register has changed since last |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
300 |
'stop', false otherwise (i.e., when unchanged)" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
301 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
302 |
^ changed value |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
303 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
304 |
"Created: / 27-09-2018 / 16:01:16 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
305 |
! ! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
306 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
307 |
!GDBRegisterWithValue class methodsFor:'documentation'! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
308 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
309 |
version_HG |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
310 |
|
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
311 |
^ '$Changeset: <not expanded> $' |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
312 |
! ! |
342b6dfe3a6f
Add model for machine registers
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
313 |