[M0] Register sizes and types

kjstol parrotcode at gmail.com
Mon Jun 18 23:05:53 UTC 2012


hi there,

M1 is progressing very well. An example of code that runs properly is:
https://github.com/parrot/m1/blob/3db3ee05c6ad056db1c8d1466b86e0cddd261dcb/t/array_and_structs.m1

it's in the M1 repo, t/array_and_structs.m1.

It seems that structs and arrays now work properly, including
combinations. It needs more testing, but the above code running made
me very happy.

I've also looked at CRC implementations; see examples/crc.m1 I've also
run that code as a C implementation, and I found that the results are
different. Upon closer inspection I saw that some numbers were the
same, whereas others differed. (In the example you can see this; the
ones in [ ] brackets are different). This made me conclude that the
difference is due to the fact that M0 regs are 64 bits.

So, to cut a long story short, my question refers to types that will
be supported in M0. Will it be possible to have 32-bit only types?
What about unsigned? I understand this mightn't be specced, but I hope
that M1's progress and the momentum that we're having with this will
push up the priority of these issues.

(on a related note, somewhat: parameters/arguments are partly working.
This seems to be quite unreliable. I'm not sure what's going on.
Speccing this would also be welcome. For now, I'm just pushing args in
registers of the callee, starting at reg 0 (for each type); the return
value is left in reg 0.)


Cheers
kjs


More information about the parrot-dev mailing list