[Coco] Linville's ramblings on assembly vs machine code

Mathieu Bouchard matju at artengine.ca
Wed Jul 12 12:03:25 EDT 2017

Linux never ever loaded a full physical copy in RAM. It's always been loaded 
on-demand, whenever the CPU tries to access a block of 4k that hasn't been 
loaded yet. Once loaded, it is shared among all processes, even if it's 
read-write, but if a block is written to be a process, it becomes non-shared so 
as to not affect the other copies. Linux has been like that since about 1992, I 
think, but I don't think that it was the first OS to have all of those features 
at once.

Le 2017-07-11 à 11:35:00, L. Curtis Boyle a écrit :

> You can do self-modifying code “legally” in OS-9 - but you have to copy the 
> routine(s) into your data area and execute them from there. The reason it 
> doesn’t work “normally” is that a program can be shared by multiple processes 
> (they all run the exact same code, just with different data areas and stacks) 
> - and it wouldn’t work well if a 2nd iteration of a program thinks it has one 
> version of the self-modifying code, but the 1st iteration has already changed 
> it to something else. If you went for a more memory bloated Unix/Linux model 
> (a full physical copy in RAM of each copy of the same program), you might be 
> able to get away with it (although things like program CRC checks would fail, 
> unless you updated it each time it self modified), but for an 8 bit machine 
> like the Coco, that would suck way too much RAM. Since the data area is unique 
> to each process, you can do self-modifying code in that area, and it won’t 
> corrupt any other copies of that program running.

| Mathieu BOUCHARD --- tél: 514.623.3801, 514.383.3801 --- Montréal, QC

More information about the Coco mailing list