On 13/10/2017 12:49, Peter J. Holzer wrote:
On 2017-10-13 10:37, Steve D'Aprano <steve+pyt...@pearwood.info> wrote:

or written by a dedicated hardware device:

https://en.wikipedia.org/wiki/Programmable_read-only_memory

And in this case there will be a tool which will read the object file
and send the contents of the read-only sections to the device which
writes the ((E)E)PROM.

First time I did this was with a home-made programmer directly connected to a keyboard. I had to press the right key to generate the 7-bit pattern I wanted (I can't remember what I did about the 8th bit), burn it into the current location then step the address counter to the next.

No mistakes were tolerated. It worked.

And finally, the most frequent case: The OS will will read the
executable into RAM, mark those pages from the read-only sections as
read-only in the page table and start it.

Or as I did it, on a home-made computer with two banks of 16KB RAM, one bank had the editor, compiler and source code, the other the generated code. Just before running it, I would flip a switch to write-protect the first bank in case something went wrong. (I didn't have floppies only slow, unreliable tape, so things had to be memory-resident as much as possible.)

And, actually, even now machines don't have that much control: you create a large table of data at runtime, but it is still in writeable memory, and accidental or malicious code could write into it.

No matter that the C source may have had a few consts sprinkled about. (It's bit like those incredibly annoying anti-piracy messages and videos you get on DVDS. No actual pirate would ever see them, only honest people who have no intention of copying!)

Even if data is actually in write-protected memory, attempts to write to it will cause a crash. On my home-made system, they just did nothing. Much more graceful.

--
bartc
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to