Browse Prior Art Database

Floating Point Machine Code Generator

IP.com Disclosure Number: IPCOM000078051D
Original Publication Date: 1972-Nov-01
Included in the Prior Art Database: 2005-Feb-25
Document File: 3 page(s) / 58K

Publishing Venue

IBM

Related People

Jimenez, AJ: AUTHOR [+2]

Abstract

This algorithm allows the user to generate a very efficient object code, which carries out calculations on one single array. The array can be as large as the size of the CPU or virtual memory. For application to an IBM System 360 or 370 computer, the elements of the array are floating-point variables, and the size of the CPU memory is 16 megabytes.

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 53% of the total text.

Page 1 of 3

Floating Point Machine Code Generator

This algorithm allows the user to generate a very efficient object code, which carries out calculations on one single array. The array can be as large as the size of the CPU or virtual memory. For application to an IBM System 360 or 370 computer, the elements of the array are floating-point variables, and the size of the CPU memory is 16 megabytes.

The algorithm takes advantage of the existence of two sets of registers in a CPU, for example, in the system 360, there are four floating-point registers and sixteen general purpose registers. The four floating-point registers are used if and only if, the operation is a floating-point operation. Addressing of the array for a floating-point operation is accomplished by combinations of the general purpose registers and a predetermined fixed displacement. Note that the floating- point registers are not used for addressing.

In the present program for use with an IBM System 360 computer, the sixteen general purpose registers can be initialized so that an array of up to 200 kilobytes of storage can be addressed without changing any of the general purpose registers. Specifically, an address in a floating-point instruction for an IBM System 360 computer consists of a base register plus an index register plus a displacement. By reference to Fig. 1 and the following example, it can be shown how these three numbers are combined to give the address in memory to which the instruction refers:

(Image Omitted)

The displacement is a number between zero and 4K, where K equals 1024. This displacement is added to the numbers which are stored in the base register and index register indicated in the instruction. The sum of these three numbers is used as an address in storage. A certain set of numbers can be placed in the base and index registers which will allow addressing a maximum amount of core storage, without changing any of those registers. For use in an IBM System 360 computer, set seven of the general purpose registers as base registers to values differing by 4K, and set seven other of the general purpose registers as index registers to values differing by 28K. By combinations of index register numbers, base register numbers and displacement, the user can address any one of 200K locations in storage.

Therefore, to carry out a series of calculations on an array of less than 200K locations in storage, the user can initialize the 16 general purpose registers to the numbers as shown in Fig. 1, and calculate addresses for all calculations in terms of these index and base registers, plus a displacement. Since these operations are to be carried out in the floating-point registers, the user can create object ...