A student asks three interesting questions. None super-critical to 306, but some of you may be interested:
Hello Dr. Patt I was reading the book and I had a few questions 1. Is an interrupt always priveliged and done by the operating system?
Never say always, because someone will generally come up with a situation where for some reason I can not think of, it will be done otherwise. However, in my experience, yes, always privileged, and handled by the o/s.
and if it is so does that mean the interrupt routine uses only the supervisor stack to save the state of the interrupted program? Is that always the case?
There was a time when there was one stack. Again, I am reluctant to ever say always since systems are person-made and some person may have a good reason for doing otherwise. But generally the computer has separate priv/unpriv stacks and uses the privileged stack to save state.
2. At the end of an interrupt routine I know that the last instruction is RTI which pops the PC and PSR from the supervisor stack and load them back into their registers so the interrupted program can resume as if nothing happened but what instruction saves R6 into into Saved. SSP and reloads R6 into Saved.USP, is that part of RTI or is that part of all interrupts routines and it's done automatically by the operating system?
Automatically by the hardware in initiating the interrupt and in carrying out the work of RTI. The net result being that during the service routine, R6 is the SSP and during the normal application code, R6 is the USP.
Also what exactly are Saved.SSP and Saved.USP, I know it says they're internal registers, but what does that mean?
That they are internal registers, like MAR and MDR, for example.
Where is their memory location..is it in a the stack itself,is there a location in each stack reserved to save R6?
No memory location. Just internal registers that the hardware uses to save USP on an interrupt, and save SSP on a RTI.
3. On page 269, Figure 10 .12, there is the subroutine RangeCheck to make sure the result of each of the 2 integers is not greater than 999 or less than -999. why those values. I know on pg 268 on the bottom paragraph you wrote "For our puposes, suppose we restrict values to integers in the range -999 to +999. This will come in handy when we design our home-brew calculator." So is it for convenience sake that you chose those values in this example so they'll work in the final calculator example or is there an important logical reason that I'm missing to why you choose those as your boundaries?
Strictly for convenience sake for our particular calculator.
Thank you, sorry if any of the questions seem stupid
None of them were stupid. Thank you for the
EE306 Student << name withheld to protect the self-deprecating student >>