× 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: Leif Svalgaard <l.svalgaard@xxxxxxxxxxxxx>
  • Date: Fri, 10 Dec 1999 11:19:03 -0600

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


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

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.