[hatari-devel] Conditional breakpoint code, please comment!
Eero Tamminen
eerot at users.berlios.de
Wed Jun 17 19:45:07 CEST 2009
Hi,
On Tuesday 16 June 2009, Laurent Sallafranque wrote:
[...]
> You can't access to a memory with X0, X1, Y0, Y1, A, B, M0-M7, N0-N7.
>
> But memory can be accessed relatively with R0-R7.
>
> In DSP, you can adress memory in 4 different ways :
>
> Word access (24 bits) :
>
> X:ea Y:ea P:ea (effective addressing mode)
> X:aa Y:aa P:aa (absolute addressing mode)
>
> Long word access (48 bits) :
>
> L:ea
> L:aa
>
> ea represent any of (R0-R7) registers, in all the modes (R0+N0),
> (R0)+N0, (R0+), ...
What the arithmetic operators here mean?
> ea can also be an absolute long address (x:$1234, ...) or an immediate
> value (no memory access here)
>
> aa is an immediate address. this address is generally a short address.
>
> In X, Y, P mode, you only access to a single word memory address (24
> bits)
[...]
> The .w means nothing in DSP, as you always access to DSP memory
> (internal or external) in word size (24 bits).
> First address is a $0, next one at $1, ...
Thanks!
> > If memory space needs to be explicitly specified in indirect register
> > addressing, then there needs to be some separator for the address space
> > like '/' above. I would use it them also in addresses like in
> > "x/$200"..
>
> I thing ":" would look closer to DSP writing convention if it is
> possible to use them.
As there's no need for width, I think for DSP I'm going to use that for
the address space instead of width. I can think about supporting some
other notation after my vacation.
So for now the syntax would be:
> x:$12
-> ($12).x
> x:123a
What the 'a' means here? (How it differs from "x:123"?)
> y:(R4)-
-> (r4).y
Does this sound acceptable?
Regarding the "()-" notation, I'm not going to support arithmetic operations
for the breakpoints, it would make them too complicated.
> In L memory access mode, you access simultaneously to X and Y memory
> (48 bits long word)
>
> Some examples :
>
> l:(R0)
> l:$abcd
If I understood correctly, this should be possible with:
(r0).x =<value> && (r0).y = <value>,
So I don't need specifically to add support for 48 bits?
(Currently breakcond stuff is stored as Uint32 instead of long long)
> Ps : I'm really busy for work this week, I'll have more time next week
> to have a look at all of this.
> But if you have more questions, don't hesitate to ask them.
Thanks! I may still touch the code tomorrow, but after that I'll be
at least a week off-net so you and Nicolas have time to find all the bugs
in my code I need to fix when I get back. ;-)
- Eero
More information about the hatari-devel
mailing list