3 ms·
If I recall correctly, UNIX vendors in the late 90s were debating a fair bit internally and amongst each other whether to use LP64 or ILP64 or LLP64 (where long
by gregw2 2y ago
If I recall correctly, UNIX vendors in the late 90s were debating a fair bit internally and amongst each other whether to use LP64 or ILP64 or LLP64 (where long longs and pointers were 64bit).
ooh, found a link to a UNIX Open Group white paper on that discussion and reasoning why LP64 should be/was chosen:
https://unix.org/version2/whatsnew/lp64_wp.html https://unix.org/version2/whatsnew/lp64_wp.html
And per Raymond Chen, why Windows picked LLP64:
https://devblogs.microsoft.com/oldnewthing/20050131-00/?p=36563 https://devblogs.microsoft.com/oldnewthing/20050131-00/?p=36...
and
https://web.archive.org/web/20060618233104/http://msdn.microsoft.com/library/en-us/win64/win64/abstract_data_models.asp https://web.archive.org/web/20060618233104/http://msdn.micro...
For some history of why ILP32 was picked for 1970s 16 to 32 bit transition of C + Unix System V (Windows 3.1, Mac OS were LP32) see John Mashey's 2006 ACM piece, partcularly the section "Early Days" sechttps://queue.acm.org/detail.cfm?id=1165766 https://queue.acm.org/detail.cfm?id=1165766
No peanut gallery comments from OS/400 guys about 128-bit pointers/object handles/single store address space in the mid-1990s please! That's not the same thing and you know it! (j/k. i'll stop now)
- senkora 2y agoFrom the "Early Days" section: > PDP-11s still employed (efficient) 16-bit int most of the time, but could use 32-bit long as needed. The 32-bitters used 32-bit int most of the time, which was more efficient, but could express 16-bit via short. Data structures used to communicate among machines avoided int. Oh, interesting. So "short" meant 16-bit portable integer, "long" meant 32-bit portable integer, and "int" meant fast non-portable integer.