Compiling to 68K processor (Maybe GDC?)

Patrick Schluter Patrick.Schluter at bbox.fr
Sun Jan 20 10:34:52 UTC 2019


On Sunday, 20 January 2019 at 09:27:33 UTC, Jonathan M Davis 
wrote:
> On Saturday, January 19, 2019 10:45:41 AM MST Patrick Schluter 
> via Digitalmars-d-learn wrote:
>> On Saturday, 19 January 2019 at 12:54:28 UTC, rikki cattermole
>>
>> wrote:
>> > [...]
>>
>> At least 68030 (or 68020+68851) would be necessary for proper 
>> segfault managing (MMU) and an OS that uses it. Afaict NULL 
>> pointer derefernecing must fault for D to be "usable". At 
>> least all code is written with that assumption.
>
> For @safe to work properly, dereferencing null must be @safe, 
> which means more or less means that either it results in a 
> segfault, or the compiler has to add additional checks to 
> ensure that null isn't dereferenced. The situation does get a 
> bit more complicated in the details (e.g. calling a non-virtual 
> member function on a null pointer or reference wouldn't 
> segfault if the object's members are never actually accessed, 
> and that's fine, because it doesn't violate @safe), but in 
> general, either a segfault must occur, or the compiler has to 
> add extra checks so that invalid memory is not accessed. At 
> this point, AFAIK, all of the D compilers assume that 
> dereferencing null will segfault, and they don't ever add 
> additional checks. If an architecture does not segfault when 
> dereferencing null, then it will need special handling by the 
> compiler, and I don't think that ever happens right now. So, if 
> D were compiled on such an architecture, @safe wouldn't provide 
> the full guarantees that it's supposed to.
>

Ok, thanks for the explanation. This said, my statement that a 
PMMU is required for NULL pointer segfaults is wrong. Even 68000 
can segfault on NULL dereference in user mode at least (the 
famous bus error 2 bombs on Atari ST or guru meditations on 
Amiga). In priviledged mode though it's not the case as there is 
memory at address 0 (reset vector) that might be necessary to 
access by an OS.



More information about the Digitalmars-d-learn mailing list