Port-dreamcast archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Super-H machine language issues

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                mouse%rodents-montreal.org@localhost
/ \ Email!           7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B

Home | Main Index | Thread Index | Old Index