Paid episode

The full episode is only available to paid subscribers of Computer, Enhance!

Monday Q&A #8 (2023-04-17)

Answers to questions from last week's videos
17

Each Monday I answer questions from the comments on the prior week’s videos. Transcripts are not available for Q&A videos due to length. I do produce closed captions for them, but Substack still has not enabled closed captions on videos :(

Questions addressed in this video:

  • [01:26] “Since we can freely write to all memory and instructions are just stored in memory, does that mean we could overwrite an instruction while running?”

  • [08:42] “To really get how the 8086 does memory address resolution we should be using the DS segment right?”

  • [11:48] “At the beginning of the class you talked about memory being on disk, in RAM, and in L1, L2, or L3 caches. Do x86 instructions have to differentiate between all of those? I.E. something like mov ax [L3: 52] or do they treat the RAM like one big array of memory, and the L1:3 caches are smart enough to know when an addressed byte is already cached?”

  • [20:46] “Now that we generated this image file with little endian. Does that mean if we loaded this image file into a machine using big endian, the image would display totally different? I’m guessing you would have to create two different image files. Does this mean if I program in a higher language on a big endian cpu that my code will only work on a big endian cpu? Or is higher language adding more instructions just to check what endian the machine is using?”

  • [35:01] “You mentioned the idea of Turing completeness. Could you please give an explanation of what that means? Thank you for your time.”

  • [42:38] “In our simulator we have our program in address 0, in a pack of 64K of memory. In a real program I guess we won't have access to all the memory of the computer, but instead something the OS decide to give us.

    How does our program know how much memory does it have available for use? How can my program know that at runtime, since once I compile it to use let's say 1 MB of memory, it will fail if the OS give it less than that, and if it gives more than that, the program won't take advantage of all of it. Can you explain how does that work?”

The full video is for paid subscribers

Programming Courses
A series of courses on programming topics.
Authors
Casey Muratori