|
Thanks all. This is fascinating stuff. > -----Original Message----- > From: pytel@us.ibm.com [SMTP:pytel@us.ibm.com] > Sent: Friday, December 10, 1999 12:00 PM > To: MI400@midrange.com > Subject: RE: LQ instruction question > > Every pointer type needs to have all tag bits set to be a valid pointer. > The last field in LQ instruction is a mask which is compared to pointer > flag bits and is used to set a bit in a condition register to efficiently > test for a pointer type. > LQ instruction can be immediately followed by branch on condition register > - no separate test instruction is needed. > My guess (I may be wrong) - 15 is a test for null pointer. > > Alexei Pytel > > > Leif Svalgaard <l.svalgaard@pentasafe.com> on 12/10/99 11:19:03 AM > > Please respond to MI400@midrange.com > > To: MI400@midrange.com > cc: > Subject: RE: LQ instruction question > > > > > > I think the four bits in that nibble denote an ORed mask of pointer > types. > > > > B'1000' = system pointer > > B'0100' = instruction pointer > > B'0010' = space pointer > > B'0001' = data pointer > > > > I think LQ throws an exception if the source pointer is not one of the > > types in the nibble. > > > [Leif Svalgaard] I have been thinking a bit (pun intended) more > about this. > Frank Soltis's book says: A pointer in the original S/38 occupied > four consecutive > 4-byte words in memory, each with its own tag bit. We decided to > have the > tag bit for every memory word set to 1 if that word contained any of > the four parts > of a pointer. If there was no part of a pointer in the word, the tag > bit was set > to 0. The pointer itself needed only one tag, so we said if all 4 > bits in the > consecutive four memory words were set to 1, then the pointer had a > logical > tag of 1. If any of the 4 bits was 0, then the pointer had a logical > tag of 0. > Later implementations of the AS/400 have a 64-bit (8-byte) memory > word. > A 64-bit memory word requires 8 ECC (Error Correction Code) bits; so > with > the tag bit, the AS/400 memories are packaged 73 bits wide. We still > keep > pointers on 16-byte boundaries and each pointer has one logical tag > bit. > For the AS/400 with the 64-bit memory word, the TWO tag bits in the > consecutive two words that hold the pointer must both be 1 for the > pointer > to have a logical tag of 1. If either tag bit is 0, then the pointer > has a logical > tag of 0. > > With all this in mind, how can the LQ instruction know what type of > pointer > it is trying to load? there are only two physical tag bits available > and they > must both be set to have a valid logical tag. Maybe Frank is not > telling the > whole truth or maybe the 4-bit field is part of a design that was > never actually > implemented? > > I've tried various combinations of the 4 bits, and it doesn't seem > to matter. > ?????? > +--- > | This is the MI Programmers Mailing List! > | To submit a new message, send your mail to MI400@midrange.com. > | To subscribe to this list send email to MI400-SUB@midrange.com. > | To unsubscribe from this list send email to MI400-UNSUB@midrange.com. > | Questions should be directed to the list owner/operator: > dr2@cssas400.com > +--- > > > > +--- > | This is the MI Programmers Mailing List! > | To submit a new message, send your mail to MI400@midrange.com. > | To subscribe to this list send email to MI400-SUB@midrange.com. > | To unsubscribe from this list send email to MI400-UNSUB@midrange.com. > | Questions should be directed to the list owner/operator: > dr2@cssas400.com > +--- +--- | This is the MI Programmers Mailing List! | To submit a new message, send your mail to MI400@midrange.com. | To subscribe to this list send email to MI400-SUB@midrange.com. | To unsubscribe from this list send email to MI400-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: dr2@cssas400.com +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.