× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.


  • Subject: RE: LQ instruction question
  • From: pytel@xxxxxxxxxx
  • Date: Fri, 10 Dec 1999 11:59:35 -0600

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
+---


As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.