Abstract:
A compiler framework uses a generic "shell" or control and sequencing mechanism, and a generic back end (where the code generator is target-specific). The generic back end includes the functions of optimization, register and memory allocation, and code generation. The shell may be executed on various host computers, and the code generation function of the back end may be targeted for any of a number of computer architectures. A front end is tailored for each different source language, such as Cobol, Fortran, Pascal, C, C++, Ada, etc. The front end scans and parses the source code modules, and generates from them an intermediate language ("IL") representation of the programs expressed in the source code. This IL is constructed to represent any of the source code languages in a universal manner, so the interface between the front end and back end is of a standard format, and need not be rewritten for each language-specific front end. The IL representation generated by the front end is based upon a tuple as the elemental unit, where each tuple represents a single operation to be performed, such as a load, a store, an add, a label, a branch, etc. A data structure is created by the front end for each tuple, with fields for various necessary information. One feature of the invention is a mechanism for representing effects and dependencies in the interface between front end and back end; a tuple has an effect if it writes to memory, and has a dependency if it reads from a location which some other node may write to. A mechanism independent of source language is provided for describing the effects of program execution. Another feature is the use in the optimization part of the compiler of a method for analyzing induction variables, where the improvement is to use the side effects sets used to construct IDEF sets. Another feature is a mechanism for "folding constants" (referred to as K-folding or a KFOLD routine), included as one of the optimizations. A further feature is the type definition mechanism, referred to as the TD module, which provides mechanisms used by the front end and the compiler of the back end in constructing program type information to be incorporated in an object module for use by a linker or debugger. Another feature is a method for doing code generation using code templates in a multipass manner.
Abstract:
Possible values for a computed destination address of an execution transfer instruction are found by a backward search through a flowgraph of a program. During the search, a symbolic expression for the destination address is successively modified to reflect the effect of each prior instruction until the symbolic expression represents an absolute or program-counter relative address, or until the search can no longer continue. The search can no longer continue, for example, when an instruction is reached that affects the value of the expression in an indefinite way. When backward symbolic execution reaches the entry point of a block in the flowgraph, backward symbolic execution proceeds backward to each predecessor block that has not already been examined for the execution transfer instruction. Therefore multiple definite values as well as a value of "unknown" may be found for a computed destination address. Preferably backward symbolic execution is performed while constructing the flowgraph, in order to find the locations of additional instructions. As additional instructions are found, new blocks and new paths between blocks are added to the flowgraph. Backward symbolic execution is repeated when the new paths may provide additional values for the computed destination addresses.
Abstract:
There is provided means to preserve the multicast address of a frame on a first communications system having a large multicast address space when the frame is forwarded onto a second communications system having a small multicast address space. A connection apparatus is provided for connecting a first communications system with a second communications system. There is a means for receiving at least one first frame from said first communications system, said at least one first frame having a destination address field, said destination address field containing a desired destination address, and there is a means for forwarding said at least one first frame onto said second communications system as a second frame, and for writing a second destination address into a destination address field of said second frame. Also there is a means for writing said desired destination address into a predetermined field of said second frame, and a means for writing an indicator into said second frame, said indicator capable of being interpreted by a receiving station to mean that said desired destination address is written into said predetermined field of said second frame. The frame may be forwarded onto a third communications system supporting the multicast address structure of the first communications system, and the multicast address is recovered from the representation of the multicast address written into the second frame and the multicast address is written into the address field of a third frame transmitted onto the third communications system.
Abstract:
There is provided a means to preserve the multicast address of a frame on a first communications system having a large multicast address space when the frame is forwarded onto a second communications system having a small multicast address space. The invention comprises a connection apparatus for connecting a first communications system with a second commmunications system and has a means for receiving at least one first frame from the first communications system, the at least one first frame having a multicast destination address, the multicast destination address requiring the at least one first frame to be transmitted onto the second communications system. Also there is a means for writting a representation of the multicast address into a second frame and for transmitting the second frame onto the second communications system.
Abstract:
Use of a multicast address in a LAN, where the LAN does not support an adequate multicast address space, is implemented. An apparatus is provided for delivering a multicast address to a station on a local area network, where the local area network does not suppport the multicast address. There is a means for transmitting a frame on the local area network, the frame having; a predetermined field containing a reference to the multicast address, an indicator, the indicator capable of being interpreted by a receiving station to mean that the multicast address may be recovered from the frame by parsing the frame, and an applications program may be executed in response to the multicast address. Also, the apparatus may have a receiving station capable of receiving the frame; and there may be a means, in the receiving station, for executing an applications program in response to the multicast address.
Abstract:
A technique for logically connecting local area networks (LANs) that may be separated by wide area networks containing routers and other network components. A logical link is formed between two bridge-like devices called tunnelers, such that, once a tunnel has been established between two LANs, other devices on the LANs can communicate as if the tunnel were a bridge. The tunneling mechanism of the invention requires that each LAN or extended LAN have only one active tunneler at any particular time, referred to as the designated tunneler, and each of the tunnelers is configured to have knowledge of the identities of the other tunnelers. A tunnel is established after a successful exchange of messages between two tunnelers, and then traffic may be forwarded through the tunnel in a transparent manner. The tunneling mechanism permits messages to be forwarded between LANs separated by a wide area network containing routers. Moreover, the mechanism permits filtering of traffic, such that only selected types of traffic, or messages for selected destinations or from selected sources, are forwarded through tunnels. The tunneling mechanism inherently precludes the formation of closed communication loops. An alternate embodiment of the invention optimizes the configuration process for particular network topologies.
Abstract:
In a data processing system, a memory board recognizes the presence of a special condition in the system, such as a 128 MB memory board. In such a situation, the memory board configures itself to map its address space accordingly, such as around a "hole" in the available memory to prevent conflicts between memory space and I/O space. In the absence of the special condition, the memory space will be contiguous. In addition, slot identification signals are passed sequentially to aid the memory boards in determining where their address spaces exist.
Abstract:
A method of encoding the characters of a character set, wherein the characters have a plurality of attributes (e.g., base, diacritical, and case), and wherein each attribute may have a plurality of values. The method comprises the steps of: dividing a multi-digit code into a plurality of parts, assigning each attribute to a different part, and, within each part, assigning a different numerical code to each different value of the attribute.
Abstract:
In a data processing system with a central processing unit (CPU), a main store (2) and a system bus (3), which may be connected to the main store (2) may be directly connected to the CPU (1) and there are a first switching unit (5) which controls the connection between the CPU (1) and the main store (2) and a second switching units (5, 7) are so interconnected that only one of them can release the existing connection of the CPU (1) or the system bus (3) to the main store. Here the main store, the first and second circuit and the first and second buffers are fitted on the same board as the CPU (1).