Forums before death by AOL, social media and spammers... "We can't have nice things"
|    alt.os.development    |    Operating system development chatter    |    4,255 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 3,425 of 4,255    |
|    Joe Monk to All    |
|    Re: segmentation    |
|    10 Nov 22 16:08:59    |
      From: joemonk64@gmail.com              > No, that's not correct. If a program only ever populates the low        > 32 bits of registers, to use as addresses, then it is a 32-bit        > program.        >               Not on z/Arch.              ALL z/Arch memory access is by absolute address, which is always 64-bit.              "For purposes of addressing main storage, three basic types of addresses are       recognized: absolute, real, and virtual. The addresses are distinguished on       the basis of the transformations that are applied to the address during a       storage access. Address        translation converts virtual to real, and prefixing converts real to absolute."              "Absolute Address       An absolute address is the address assigned to a main-storage location. An       absolute address is used for a storage access without any transformations       performed on it.       The channel subsystem and all CPUs in the configuration refer to a shared       main-storage location by using the same absolute address. Available main       storage is usually assigned contiguous absolute addresses starting at 0, and       the addresses are always        assigned in complete 4 K-byte blocks on integral boundaries."              "Real Address       A real address identifies a location in real storage. When a real address is       used for an access to main storage, it is converted, by means of prefixing, to       an absolute address. At any instant there is one real-address to       absolute-address mapping for each        CPU in the configuration. When a real address is used by a CPU to access main       storage, it is converted to an absolute address by prefixing. The particular       transformation is defined by the value in the prefix register for the CPU."              >Just because someone moves a properly-written 32-bit program (that        >doesn't rely on address masking) from S/370 to z/Arch, doesn't        >magically turn it into a 64-bit program. Life would be so simple if        >it did. The bitness is decided at build time. ie how many address bits        >are populated, and whether the programmer is a jackass who relied        >on masking.               "A 24-bit or 31-bit virtual address is expanded to 64 bits by appending 40 or       33 zeros, respectively, on the left before it is translated by means of the       DAT process, and a 24-bit or 31-bit real address is similarly expanded to 64       bits before it is        transformed by prefixing. A 24-bit or 31-bit absolute address is expanded to       64 bits before main storage is accessed. Thus, the 24-bit address always       designates a location in the first 16 M-byte block of the 16 E-byte storage       addressable by a 64-bit        address, and the 31-bit address always designates a location in the first 2       G-byte block. ... Similarly, the sizes of the real or absolute addresses used       or yielded by the DAT, stacking, unstacking, and tracing processes are always       64 bits."              "whenever the machine generates and provides to the program a 24-bit or 31-bit       address, the address is made available (placed in storage or loaded into a       general register) by being imbedded in a 32-bit field, with the leftmost eight       bits or one bit in        the field, respectively, set to zeros."              Joe              --- SoupGate-Win32 v1.05        * Origin: you cannot sedate... all the things you hate (1:229/2)    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca