Patent Document ID: 5404531
Application ID: 08098162

Base Claim:
1. In a method of compiler processing executed by a computer, including the steps of analyzing syntax of a source program and translating the source program into an intermediate code and performing a code movement, in which the source program includes macro portions in a source code, each macro portion being a source code statement which, when compiled, corresponds to a plurality of machine code instructions, the macro portions corresponding to a plurality of operation details, an improvement comprising: generating intermediate code to represent the source program both by an array structure and a linked list structure pointing thereto, by: in the step of analyzing syntax of the source program, simplifying code movement by expressing the macro portions of the source program as a list structure including list elements respectively representing the macro portion, said list elements having fields corresponding to respective operations of the respective macro portions, the list elements including an E element and a T element, the E element representing execution of a calculation operation, the T element representing a data transfer operation, the E element having sub structures including an LO element and an NL element, the LO element representing a loop operation, the NL node representing a non-loop operation, the T element having sub structures including an S element and an R element, the S element representing sending of data, the R element representing receiving of data; and further comprising the steps of: expressing a description of the plurality of operation details of the macro portions as an array including a plurality of array portions; designating the array portions corresponding to the operation details of respective ones of the macro portions by pointers provided in the fields of list elements representing the respective macro portions in the list structure; searching and moving elements of a syntax analysis structure, in which an E element precedes a T element in a sequence, to an opposite sequence in which a data transfer element precedes the E element; in cases where a source operand of an assignment instruction in an array portion designated by a field of the S element, which is a sub structure of the T element, is a destination operand of a store instruction in an array portion designated by a pointer of a field of the LO element which is a sub structure of the E element preceding the T element, and is not contained in a destination operand of a store instruction in an array portion designated by a field of the NL element following the LO element, and where an execution range of the LO element is equal to an execution range of the T element: changing the store instruction in the array portion designated by the field of the LO element into a signal-added store instruction for generating a transfer signal for instructing data transfer upon execution thereof, changing the T element into a TS element for performing data transfer in synchronism with generation of the transfer signal, where a TS element represents a signal-added data transfer, and moving the TS element to a position prior to the E element.

---

Claim 3:
3. The method of claim 1, wherein said steps of simplifying code movement by expressing the macro portions of the source program as a list structure comprises providing a plurality of list elements each corresponding to a macro operation and providing a pair of pointers in each list element, a first pointer designating a first pointer of a preceding element and a second pointer designating a second pointer of a succeeding element, and said step of performing a code movement comprises changing the first and second pointers of the elements.