[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 64-bit extensions
Tim Teulings (tim@edge.ping.de) schrieb:
Preface: Tim, I hope you didn't get me wrong, since I'm not suggesting the
posibilities I meantioned (except for no. 3).
>> You have some posibilities here, which one would you prefere?
>> 1) leave pointers 32 bit -> can't use 64-bit mem
>
>This is nonsense and is likely not to work.
Sure!
>> 2) make all pointers 64 bit -> how to interface to system-stuff?
>
>Where do you see problems that connot be handled by a opaque pointertype
>adress?
You mean ADDRESS as an ident in this sentence? Otherwise I don't understand
it.
What sice should your ADDRESS have then? 32 bit? 64 bit? Since it's untyped:
how to assign from/to typed pointers?
So I think you agree with me: this posibility is nonsense, too.
>> 4) add another reserved word POINTER64 and change all modules which should
>> use 64 bit pointers.
>> Please note: in this case you will get a) maintenenace problems (big,
>> big
>> ones), b) have to change _all_ of e.g. the Oberon Systems modules (incl.
>> pure applications) if Oberon System should support 64 bit pointers.
>
>Why should one differentiate between POINTER,POINTER32 or POINTER64?
I don't know! I personally think this would be bullshit, too. I just
meantioned it for completness.
>Where in the OberonSystem is code that must handle POINTERs and
>LONGINT, e.g. where is the code that depends on nummerical operations
>specialy bound to LONGINT, that fores us to resize LONGINT?
It's not the Oberon System that forces to resize LONGINT, bur the language
definition: SYSTEM.ADR() is defined to deliver LONGINT, thus LONGINT mut be
big enough to repersent all valid addresses. Remember: we are talking about a
64-bit address machine, not about 64-bit arithmetics on a 32-bit address
machine!
Futher: The language report does in no way specify the number range of
LONGINT. Neither does it suggest a range.
>Isn't it ok
>to use SIZE(ADDRESS) and just just check against minimal and maximal
>bounds when adding or subtraction (a small value) from an address to
>f.e. index some annonymous datapointer etc...?
This is the problem of overflow which is a different topic.
>I don't see reasons for
>ADDRESS beeing LONGINT that or not based on compability and missuse of
>LONGINT as C-like void-pointer.
Parton me? (in German: Bahnhof?)
>> IC!
>
>IC, what?
IC means I understood mva's explanation about why this try failed.
>As questioned before, give arguments, tell us detailed resons for that
>besides history and compability.
See above. If you don't beleave me: read the Oberon Report. Sorry for the
rough words, but I'm too bored for repeating my arguments once again.
And remember: 64 bit address machine!
+++hartmut