Re: Re: Assembler Clarification
Tuomo Stauffer <[email protected]>
| Newsgroups | gmane.comp.emulators.turnkey-mvs |
|---|---|
| Message-ID | <[email protected]> |
Hi - yes, recursion, multi-tasking, pipelining, etc, others are still catching up! No stack, thanks! So, no stack overflows, no security problems in that sense, no code injection, no push / pop nightmare, etc. Now : try IBM System/370 Systems Principles of Operation - it explains these very nicely (already 1970!) - http://bitsavers.org/pdf/ibm/370/princOps/GA22-7000-0_370_Principles_Of_Operation_Jun70.pdf have a nice day - tuomo ps. there are later versions of "Principles of Operation" but this isn't too bad. On Sun, May 9, 2010 at 21:01, Ron Hudson <[email protected]> wrote: > > > The return address is stored in a register? No recursion... right? > > Is there a stack? > > > > On Sun, May 9, 2010 at 2:16 PM, peter.thingsted <[email protected]> wrote: > >> >> >> The first thing a program needs to do is to save the contents of the >> general registers (16 of them ) in memory. >> >> The general registers are to be thought of as separate electronic pieces >> of storage - outside the main storage. >> >> You need to save the contents of these registers when your program starts >> running, and restore them after your program has finished doing whatever it >> is programmed to do. >> >> One register (14) is especially important to preserve, because it contains >> the return address of the calling program, i.e. the program that was running >> just before your assembler program. So the very last instruction in your >> program should be a BR 14, i.e branch to the machine instruction stored in >> the memory location that register 14 poinded to when YOUR program took over. >> >> You can play with one register for good effects just before your BR 14 >> instucton. You can put a value in register 15, e.g. a big fat zero by coding >> SR 15,15. This signals that all ended well. It is customary (but not >> required or in any way enforced) that you can put various powers of 2 into >> reg 15 to signal any number of abnormal situations thet your program >> detected. >> >> The latter here is part of what we call the linkage conventions. Note that >> they are conventions not enforced by any part of MVS - but you best know >> these conventions otherwise your program wil not cooperate well with all the >> other programs that taken together constitute the MVS sustem. >> >> Rgs, >> >> Peter >> mvsaudit.org >> >> >> --- In [email protected] <turnkey-mvs%40yahoogroups.com>, Ron >> Hudson <hudson.ra@...> wrote: >> > >> > Hey Wizards of Assembly Language.. >> > >> > It looks to me like one of the first things a program does in setting up >> > it's own environment >> > is tell the CPU where to put the registers? Are do the registers >> actually >> > reside in memory? >> > Does each program get it's own set of registers? Gee that would make >> context >> > changes >> > really easy.. >> > >> > (Not starting assembly language just yet but interested...) >> > >> > Thanks. >> > >> >> > >