[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