As I see it, there will be 3 types of access to bigint/nums.
1) there is the internal implementation of the PMC types associated
with them. This is where all the messy code gets hidden (assembler
optimations, register length-specific code etc).
2) PDD 2 requires that all PMC types return their internal value
as a bigint/num if requested, and accept a bigint/num value to be assigned
to. This implies that some, or possibly all implementors of other PMC
types need to know the representation of a bigint/num.
3) the outside world (ie the rest of Perl, and SOXS [ Son-of-XS ;-) ])
may get hold of bigint/nums, and they may need to know the representation
- or they may not, I'm not sure!
At this juncture I will point out that the internal representation
used within a bigint/num PMC and and the representation as defined by
the struct bigint/num in PDD4 do NOT necessarily have to be the
same. The PDD4 representation could be highly portable and standardised,
useable both by other PMC types and other Perl, while assigning
a PDD4 bigint/num to a PDD2 bigint/num PMC type, causes (if necessary)
a conversion to an efficent internal form (eg splitting into 16 bit or 31 bit
or whatever works).