ISOPAR, a new and improved sympolic optimizing assembly routine for the IBM 650
Henry Herbert Howe · 1960
Price $1,50 if SAVE is made equal to 0018: the time interval "bet-ween ABC and SAVE will be the same, on the average, and the time interval "between SAVE and 0020 will always be h-9 word-times less.This is an extreme ease.When we consider optimization of many different codes by SOAP II, we see that its method wastes an average of 2k l/2 word-times per division, as compared with the manual method, if we exclude from consideration those cases in which another variable- length order is reached before we get to a fixed address.The same argument applies to other variable-length orders, such as multiply, floating operations, read, write.For floating add, the average waste would be somewhat less, because the optimizing addends used in SOAP II are such as will usually waste a few word-times but seldom an entire turn of the dram.Summarizing, SOAP II wastes considerable time because addresses are always processed in the order in which they are reached.When a variable-length order is reached, it assigns a more or less arbitrary length to it, regardless of what the situation may be on ahead.Since, on the average, it makes little difference in computing time what address is put there, the manual method optimizes the address' with relation to later addresses, so that no time is wasted when the next fixed address is reached.ISOPAR follows the manual method.When a variable-length order is reached, it stops processing and reads in more cards until a fixed address is reached.Then it optimizes backward; then it punches for- ward.This takes more processing time than SOAP II, but produces a materially better optimized code.In the example cited above, ISOPAR would give, if its first-choice locations were available: 0000 ik