0000000433f07816-dmarc-requ...@listserv.ua.edu (Paul Gilmartin) writes: > Understood. When I first explored the S/370 instruction set, it > appeared to me that the S/360 designers had anticipated support > for location-independent code (as envisioned by Lynn Wheeler), > but software never realized that support.
tss/360 basically collected address constants into object/pool separate from the executable image ... which could be virtual address space specific ... a pointer to this (separate) area was passed to a program in a register. for adcons in the same executable image ... I would play displacement games that would be resolved at the time the original image is created (by link). Rather than program containing "absolute" adcon ... it contains a displacement. assumption is the base register is the start of the module ... then adcon is something like extrn program pdisp dc al4(program-base) then l r15,program ar r15,r12 works whether the displacement is positive or negative (standard os/360 & cms linker supports adcon arithmetic with external symbols). then the same executable image could appear at dynamically selected virtual address w/o affecting the contents of the executable image (and the same exact executable image can appear concurrently at different addresses in different virtual address spaces) there is also some loading performance improvement because the image doesn't have to be prefetched in order that all the (os/360) relocatable address constants swizzled to the loaded location (just do the memory map to the potentially shared filesystem object). the issue then is for addresses between different executable images where the displacement could be different for different virtual address spaces. that needs operating system convention with pool of pointers outside the executable image (with a passed pointer to the address/displacement pool which are virtual address space specific). past posts mentioning pain dealing with os/360 paradigm technology and trying to make executable images location independent. http://www.garlic.com/~lynn/submain.html#adcon one of the optimization trade-offs is for first time (or non-shared) mapping, is the object simply page faulted one 4k page at a time ... or is some large amount (or all) prefetched asynchronously with starting execution. I did a lot of hueristic dynamic adaptive stuff associated with loading paged mapped object (shared or not-shared). then later page faults could also result in single 4k page fetch ... or multiple adjacent 4k page fetches in single i/o operation (possibly along with some combination of synchronous and asynchronous operation). -- virtualization experience starting Jan1968, online at home since Mar1970 ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN