Browse Prior Art Database

PROGRAM EXECUTION VIA DATA STRUCTURE

IP.com Disclosure Number: IPCOM000005952D
Original Publication Date: 1990-Oct-01
Included in the Prior Art Database: 2001-Nov-19
Document File: 4 page(s) / 151K

Publishing Venue

Motorola

Related People

Josef Horstkoetter: AUTHOR [+2]

Abstract

Many different computer programs use the same basic functions. The differences between these programs is the order in which these functions are executed, and any decisions based on results from these functions.

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

Page 1 of 4

0 M

MOWROLA Technical Developments Volume 11 October 1990

PROGRAM EXECUTION VIA DATA STRUCTURE

by Josef Horstkoetter and Phillip Pollock

Many different computer programs use the same basic functions. The differences between these programs is the order in which these functions are executed, and any decisions based on results from these functions.

In a new computer program, only one basic function is implemented: a control function, which accesses the basic functions and makes decisions via an ordered data structure, thus eliminating the need for many different programs.

   In the new program a data structure is chosen to implement a program structure consisting of one command array and a set of command lists (see FIGS. 1 - 4). The command array is a one dimensional array representing a command list location (block pointer) and command specific parameters (parameter point). A command list is a nested linked list of command list block structures. Each block has several block pointers which point to other blocks in that list, a function pointer which points to the function to be executed, and parameter identifiers which identify the parameter pointer of the command array passed during function calls. Information flow between functions and command arrays elements is implemented via messages. A message has three parameters:

command ID, next pointer ID, and new command ID.

   The "wmmand ID" represents the array element which invoked the function. The "next pointer ID" represents one of the block pointers from a command list block. The "new command ID" represents the array element next to be executed. Normally it is identical to the command ID.

The operation works in the following way:

The control function loads the block pointer from the command array element via the command ID:

block pointer = command array [command ID].block pointer

The block pointer addressed by the next pointer ID is copied into the corresponding command array element:

command array [command ID].block = block pointer -z block pointer [next pointer ID]

The function pointer from the wmmand list block addressed by the new block pointer is then loaded:

function pointer = command array [command IDj.block pointer -> function pointer

This function is executed and the parameter pointers identified by the parameter IDS are passed to the function. If the new command ID is different from the last command ID, then the control function saves the old command ID on a stack and executes the new command ID.

After execution has finished the old command ID is popped from the stack and execution of this command array element is continued.

   The first command block has no function pointer. If the control function can't find a function pointer, it finishes ex- ecution of this command array element. If no old command ID is saved on the stack, then the control function waits for an external event (a message sent by another program or a user input).

The last action of each function is to send a mes...