On 2010-4-13 11:19 PM, Segher Boessenkool wrote:
Unfortunately, it does matter. FCode still expects to run in 32-bit mode and use 32-bit pointers, so the 64-bit address space doesn't buy us anything.
FCode uses 64-bit pointers on a 64-bit OF. The only thing that's always 32-bit in FCode are the literals (and of course many badly-written FCode drivers do not work properly on 64-bit OF).
Right. *Most* existing FCode drivers out there are written under FCode-version2 rules, and expect 32-bit machines.
It's possible to write 64-bit FCode using FCode-version3, but few do. Most make implicit assumptions about truncating arithmetic operations at 32 bits and fitting pointers into 32-bit values (read/written with variants of l@/l!) even among the Fcode-Version3 drivers. Regrettable, but real.
I recently had an unpleasant experience porting the MD5 algorithm to 64-bit (needed to run under Forth rather than FCode), and turned the air blue finding all the places where bad assumptions were made.