Browse Prior Art Database

Assembler Language Programming Technique to Force a Boundary

IP.com Disclosure Number: IPCOM000036585D
Original Publication Date: 1989-Oct-01
Included in the Prior Art Database: 2005-Jan-29
Document File: 4 page(s) / 37K

Publishing Venue

IBM

Related People

DeForest, TN: AUTHOR

Abstract

An algorithm that can be used by an Assembler Language application program to assure that important tables or buffers will always be placed on a given boundary to reduce the overhead generated by the application and thereby improve its relative performance.

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 48% of the total text.

Page 1 of 4

Assembler Language Programming Technique to Force a Boundary

An algorithm that can be used by an Assembler Language application program to assure that important tables or buffers will always be placed on a given boundary to reduce the overhead generated by the application and thereby improve its relative performance.

Normally there is no built-in or automatic way, using the System/370 Assembler Language, to force any boundary in a program larger than a double word. The technique described herein can be used to specify that a page boundary, or any other given boundary, be forced at a given point in a System/370 Assembler Language program. The technique uses information that is already known about the program and the code already included in it to cause the assembler to skip ahead to the next boundary before generating the rest of the program. This technique may be applied more than once in a given program and may be applied to force different size boundaries in the same program. It also may be applied in any operating system environment as long as the program is loaded at a page or other known boundary.

(Image Omitted)

In a VM environment, VM deals with all of the storage of its virtual machines and the Control Program itself in 4K (4096 byte) "pages". Often the performance of an application can be improved by forcing critical tables or buffers to be aligned on a page boundary so they will not be split across two separate real pages. While there are parameters which can be specified on some commands to allow a program to be loaded at a given location in storage, there is no built-in or automatic assembler service which can be invoked to force portions of that program to be placed on a page boundary.

Even if a program is set up to cause certain data to be page- aligned, it is common for errors to occur in a program that require code or data changes which may then change the page alignment of this critical data. The technique described herein uses the Assembler itself to determine where the next occurrence of a given boundary is located. Thus, even if changes are added later, the proper alignment will be maintained.

The technique can be used to force a given point in a System/370 Assembler program to be a fixed, whole number of user-specified storage units from another given point in the same program. In order for this second point to be aligned on the proper boundary, the beginning of the program itself must be aligned on a known boundary. In most operating systems, this can be accounted for by using standard parameters on existing controls or commands in the system.

One way of accomplishing this in a VM environment is to use the ORIGIN parameter on the LOAD command. By using an origin at the beginning of a page, all forced boundaries within the program of a page or less will be valid.

To be aligned on a given boundary means that the location of an object is evenly divisible by that boundary. The commonly used boundaries in programm...