Super-H machine language issues

der Mouse <[email protected]> Thu, 28 Oct 2010 22:56:11 -0400 (EDT)
Newsgroups gmane.os.netbsd.ports.dreamcast
Message-ID <[email protected]>
I've been messing with dreamcast stuff, and in particular I was
preparing to build assembly-/machine-level tools.  In aid of this, I
went through the Hitachi reference document (h14tp003d2.pdf) as linked
to by Marcus Comstedt's webpages.

There are a number of floating-point instructions which appear to me to
be ambiguous.  For example, page 271 says (slightly reformatted)

	FMOV.S	FRm,@(R0,Rn)		1111nnnnmmmm0111

but page 275 says (ditto)

	FMOV	XDm,@(R0,Rn)		1111nnnnmmm10111

The first is valid only when SZ is 0 and the latter when PR is 1, but I
see no reason those can't both be true at the same time - and the
functionality of those two instructions is not the same.  (They store
to the same address, but they store different amounts of data and they
get the data to be stored from different registers.)  I can't believe
the hardware reads the programmer's mind to divine the intent of the
code, leaving me wondering.

This is just an example.  There are at least a few more such cases;
I'll be doing an exhaustive mechanized search.  (I found these because I
was doing an automated search for conflicts to catch typos and was
surprised to find that this one, found by eyeballing a preliminary
list, appeared to not be a typo - or at least not *my* typo.)

So, is one of those a mistake, and I should be using something else as
my reference?  Or am I missing something here?  Or what?

/~\ The ASCII				  Mouse
\ / Ribbon Campaign
 X  Against HTML		[email protected]
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B