JP3625878B2 - Stack area allocation method by the compiler - Google Patents
Stack area allocation method by the compiler Download PDFInfo
- Publication number
- JP3625878B2 JP3625878B2 JP29245394A JP29245394A JP3625878B2 JP 3625878 B2 JP3625878 B2 JP 3625878B2 JP 29245394 A JP29245394 A JP 29245394A JP 29245394 A JP29245394 A JP 29245394A JP 3625878 B2 JP3625878 B2 JP 3625878B2
- Authority
- JP
- Japan
- Prior art keywords
- size
- variable
- stack area
- order
- variables
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Landscapes
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
【0001】
【産業上の利用分野】
本発明は、C言語等のシステム記述言語に適用するコンパイラ(compiler;翻訳ルーチン)によるスタック領域割り付け方法に関する。
【0002】
【技術背景】
C言語に代表されるシステム記述言語は、アセンブリ言語に比べて開発効率が高く、大規模システムの開発に適しているが、メモリの使用量が多いという欠点を有しており、とくにマイクロコントローラ組み込みシステム用のプログラムを作成する場合には、パソコンやワークステーション上で動作するプログラムを作成する場合と異なって、1バイトでもメモり容量を少なくすることが求められるから、上記欠点の克服が大きな課題になっている。
【0003】
【従来の技術】
システム記述言語で書かれたプログラムは、専用のコンパイラによってそのコントローラで実行できる機械語に翻訳された後、メモリにロードされ、実行される。メモリ空間におけるプログラムの配置は、コード(命令)とデータ(変数)の部分に分けられており、変数の値を参照して適宜のコードが実行されるようになっている。たとえば、ADDという加算命令があったとすると、命令ADD(A,B)の実行結果は、変数AとBの内容の加算値になる。
【0004】
ここで、変数には、プログラムの実行中、常に確保されるもの(静的変数)と所定の関数が呼び出されるときだけに確保されるもの(動的変数)の二種類がある。静的変数はメモリ上に固定的にその領域が確保されるが、動的変数は必要に応じてメモリ上のスタック領域に各変数が割り付けられる。
図5は従来のスタック領域の概念図である。ここでは、説明の便宜上、4バイト幅のスタック領域を示しているがこれに限定されない。
【0005】
V1 〜V14はそれぞれ変数であり、型(type;たとえば、固定小数点数値型、浮動小数点単精度数値型、浮動小数点倍精度数値型……)のサイズの大きいものから小さいものへとアドレス順に割り付けられている。すなわち、V1 〜V4 は最大サイズ(4バイトサイズ)の型を有するもの、V5 〜V10は中間サイズ(2バイトサイズ)の型を有するもの、V11〜V14は最小サイズ(1バイトサイズ)の型を有するものである。なお、これらの型やサイズは説明のためのものであり、実際の変数を特定するものではない。
【0006】
ここで、変数の宣言順とメモリの削減効果との関係について説明する。いま、変数の宣言の順番が「1バイト」、「4バイト」、「2バイト」、「4バイト」であったと仮定すると、このときのメモリイメージは図6(a)のようになる。なお、図中の数字(1、4、2、4)は変数の型のサイズを表している。これによれば、1バイトの変数の隣に3バイト分の空きが生じ、さらに、2バイトの変数の隣に2バイト分の空きが生じているから、結局、スタックメモリは、変数の総バイト数(1+4+2+4=11バイト)に、空きバイト(5バイト)を加えた大きさ(16バイト)になる。これに対し、宣言の順番を降順、すなわち「4バイト」、「4バイト」、「2バイト」、「1バイト」にしたときのメモリイメージは、同図(b)のようになる。空きは最後の1バイト分だけであり、スタックメモリの大きさは空きバイトも含めて12バイトになる。したがって同図(a)に比べて、4バイト分のメモリ削減を図ることができる。
【0007】
【発明が解決しようとする課題】
しかしながら、かかる従来のコンパイラによるスタック領域割り付け方法にあっては、その割り付け順が型が大きいものから小さいものへとなっていたため、たとえば、型のサイズによってアクセス範囲が異なるアーキテクチャの場合には、スタック領域の後方に位置する変数(すなわち型サイズの小さな変数)に対するアクセス回数が増えて効率が悪くなるといった問題点がある。
【0008】
図7はスタック領域に対して1命令でアクセスできる範囲を示す概念図であり、スタック領域の最後方に位置する変数に対するアクセス範囲(1バイトアクセスの範囲)が最も狭くなっている。したがって、たとえば、図5のV11〜V14を1度にアクセスすることができないから、型サイズの小さい変数の呼出し頻度が多いほど、プログラムの実行速度が遅くなるという不具合がある。
【0009】
【目的】
そこで、本発明は、変数の割り付け順序を逆にすることにより、型のサイズによってアクセス範囲が異なるアーキテクチャに適用した場合の実行速度の低下問題を解決することを目的とする。
【0010】
【課題を解決するための手段】
本発明は、上記目的を達成するために、各変数を型のサイズ別に振り分けるステップと、前記変数を並べ替える順序を昇順、降順のいずれかに選択するステップと、昇順が選択されたときはサイズの小さい変数から大きい変数へと並べ替え、降順が選択されたときはサイズの大きい変数から小さい変数へと並べ替えるステップと、該並べ替えの順番でスタック領域に割り付けるステップと、を含むことを特徴とする。
なお、システムの要求仕様がファイルサイズ又はスピードを優先する場合は前記昇順を選択し、該要求仕様がスタックサイズの削減を優先する場合は前記降順を選択するとよい。
【0011】
また、各変数を型のサイズ別に振り分けるステップと、サイズの小さい変数から大きい変数へと昇順で並べ替えるステップと、サイズの小さい変数が先頭にくるように該並べ替えの順番でスタック領域に割り付けるステップと、前記振り分けられたサイズ毎のトータルサイズを所定のサイズで除算し、商の部分は前記サイズの順序に従って割り付けを行うステップと、前記除算の余りの部分を前記割り付けが終了した後に割り付けるステップと、を含むことを特徴とする。
なお、前記所定のサイズが1命令でアクセスできるサイズであることはよい。
【0012】
また、各変数を型のサイズ別に振り分けるステップと、サイズの小さい変数から大きい変数へと昇順で並べ替えるステップと、サイズの小さい変数が先頭にくるように該並べ替えの順番でスタック領域に割り付けるステップと、前記スタック領域内で変数を分割し、該分割された部分をスタックの最後に割り付けるステップと、を含むことを特徴とする。
【0013】
【作用】
本発明では、型のサイズの小さい変数がスタック領域の前方に配置される。したがって、型のサイズによってアクセス範囲が異なるアーキテクチャに適用した場合でも、サイズの小さい変数を1命令でアクセスでき、プログラムの実行速度を向上できる。
【0014】
【実施例】
以下、本発明の実施例を図面に基づいて説明する。
図1〜図4は本発明に係るコンパイラによるスタック領域割り付け方法の一実施例を示す図である。
図1において、1は前処理部、2は変数割り付け部である。前処理部1はその概略フローを図2に示すように、すべての変数(データ)について、型のサイズ(境界整合値)毎に振り分けるステップ11と、プログラムの設計仕様に従って、スタックサイズの削減を優先させるか実行速度(またはプログラムサイズ;ファイルサイズとも言う)を優先させるかを決めるステップ12とを含み、スタックサイズ優先の場合には肢(1)に分岐し、実行速度優先の場合には肢(2)に分岐する。
【0015】
再び、図1において、20及び21は、いずれも変数を割り付けたスタック領域であるが、20は肢(1)に対応するもの、21は肢(2)に対応するものである。スタック領域20は、冒頭で述べた従来例と同様に、各変数をサイズの大きいものから小さいものへと降順に並べ替え、サイズの大きい変数が先頭に来るように割り付けたものである。これに対して、スタック領域21は、各変数をサイズの小さいものから大きいものへと昇順に並べ替え、サイズの小さい変数が先頭に来るように割り付けたものである。
【0016】
たとえば、左側のスタック領域20の先頭行から4行目には4バイトサイズの変数V1 〜V4 が割り付けられ、5行目から7行目には2バイトサイズの変数V5 〜V10が割り付けられ、最終行には1バイトサイズの変数V11〜V14が割り付けられており、右側のスタック領域21の先頭行には1バイトサイズの変数V11〜V14が割り付けられ、2行目から4行目には2バイトサイズの変数V5 〜V10が割り付けられ、5行目から最終行には4バイトサイズの変数V1 〜V4 が割り付けられている。すなわち、スタック領域20は「降順」の割り付け、スタック領域21は「昇順」の割り付けになっている。
【0017】
ここで、二つのスタック領域20、21の間には、型のサイズによって1命令でアクセスできる範囲が示されている。4バイトデータのアクセスであれば領域のすべてが範囲に収まるが、2バイトデータのアクセスや1バイトデータのアクセスでは領域の一部に限られる。
したがって、左側のスタック領域20の変数V11〜V14をアクセスする場合は、1バイトアクセスを複数命令で行う必要があり、効率的でないが、右側のスタック領域21の変数V11〜V14をアクセスする場合は、その変数V11〜V14が領域の先頭、すなわち1バイトアクセスの範囲内に位置しているから、1命令で済み、効率がよい。
【0018】
以上のとおり、本実施例では、スタック領域の変数割り付けを昇順とすることにより、型サイズの小さな変数に対するアクセス効率を改善でき、プログラムの実行速度を向上することができるという優れた効果が得られる。なお、スタックサイズ優先の場合には、従来通り、割り付けを降順とすればよく、要求仕様によって「昇順」、「降順」を適宜に選択すればよい。
【0019】
また、変数を昇順に並べ替える際に、各型ごとの変数のトータルサイズを所定のサイズで除算し、その商の部分を並べ替えの対象にするとともに、余りの部分を並べ替え順の後に割り付けるようにしてもよい。
図3はその並べ替えの概略フローである。このフローでは、まず、ステップ31で、すべての変数(データ)について、型のサイズ(境界整合値)毎に振り分けた後、ステップ32で、振り分けたデータのトータルサイズ(すなわち各型ごとの変数のトータルサイズ)及びデータのチェックを行う。次いで、ステップ33で、そのトータルサイズを所定のサイズ(たとえば最大の境界整合値)で除算し、商の部分(割りきれる部分)と余りの部分とに分割した後、ステップ34、35で、境界整合値の種類分だけループを繰り返すとともに、境界整合値の小さいものから昇順で各変数を割り付ける。そして、最後にステップ36で、余りの部分をその後に割り付ける。
【0020】
たとえば、図4(a)に示すように、1バイトの型を持つデータ(図中の“1”)が9個連続する場合で、かつ、その1バイトの型のデータを1命令でアクセスできる範囲をAとすると、このデータ型のトータルサイズは9バイトとなり、最大の境界整合値は8バイトとなるから、商の部分は8バイト、余りの部分は1バイトになる。したがって、この場合には、1バイトの型のデータのうち、最後の1バイト分がスタックの最後に割り付けられることになる。
【0021】
または、スタック内で分割可能な変数であれば、次のようにすることもできる。たとえば、図4(b)に示すように、5バイトの型を持つ1つの変数(図中の“5”)で、この変数が分割可能な場合には、3バイトの部分(3)と2バイトの部分(2)とに分割し、2バイトの部分(2)をスタックの最後に割り付けてもよい。
【0022】
【発明の効果】
本発明によれば、スタック領域の変数割り付けを昇順とすることにより、型のサイズによってアクセス範囲が異なるアーキテクチャに適用した場合でも、サイズの小さい変数を1命令でアクセスでき、プログラムの実行速度を向上できる。
【図面の簡単な説明】
【図1】一実施例の概念図である。
【図2】一実施例の前処理の概略フローである。
【図3】一実施例に適用して好ましい変数分割の概略フローである。
【図4】一実施例に適用して好ましい変数分割の概念図である。
【図5】従来のスタック領域の概念図である。
【図6】変数の宣言順とメモリの削減効果との関係図である。
【図7】型のサイズとアクセス範囲との関係を示す概念図である。
【符号の説明】
V1 〜V14:変数
20、21:スタック領域[0001]
[Industrial application fields]
The present invention relates to a stack area allocation method by a compiler (translation routine) applied to a system description language such as C language.
[0002]
[Technical background]
A system description language represented by C language has higher development efficiency than assembly language and is suitable for the development of a large-scale system, but has a drawback that it uses a large amount of memory. When creating a program for a system, unlike the case of creating a program that runs on a personal computer or workstation, it is required to reduce the memory capacity even with a single byte. It has become.
[0003]
[Prior art]
A program written in a system description language is translated into a machine language that can be executed by the controller by a dedicated compiler, and then loaded into a memory and executed. The arrangement of programs in the memory space is divided into code (instructions) and data (variables) portions, and appropriate codes are executed with reference to the values of the variables. For example, if there is an addition instruction called ADD, the execution result of the instruction ADD (A, B) is an addition value of the contents of variables A and B.
[0004]
Here, there are two types of variables: those that are always secured during execution of the program (static variables) and those that are secured only when a predetermined function is called (dynamic variables). The area of static variables is fixedly secured on the memory, while each variable is allocated to the stack area on the memory as needed for dynamic variables.
FIG. 5 is a conceptual diagram of a conventional stack area. Here, for convenience of explanation, a stack area having a width of 4 bytes is shown, but the present invention is not limited to this.
[0005]
Each of V 1 to V 14 is a variable and has a type (type; for example, a fixed-point numeric type, a floating-point single-precision numeric type, a floating-point double-precision numeric type,...) In order of address from the largest to the smallest. Assigned. That is, V 1 to V 4 have a maximum size (4 byte size), V 5 to V 10 have an intermediate size (2 byte size), and V 11 to V 14 have a minimum size (1 Byte size) type. Note that these types and sizes are for illustrative purposes and do not specify actual variables.
[0006]
Here, the relationship between the declaration order of variables and the memory reduction effect will be described. Assuming that the order of declaration of variables is “1 byte”, “4 bytes”, “2 bytes”, and “4 bytes”, the memory image at this time is as shown in FIG. The numbers (1, 4, 2, 4) in the figure indicate the size of the variable type. According to this, there is a space of 3 bytes next to the 1-byte variable, and a space of 2 bytes next to the 2-byte variable. The number (1 + 4 + 2 + 4 = 11 bytes) plus an empty byte (5 bytes) results in a size (16 bytes). On the other hand, the memory image when the declaration order is descending, that is, “4 bytes”, “4 bytes”, “2 bytes”, “1 byte” is as shown in FIG. The empty space is only the last one byte, and the size of the stack memory is 12 bytes including the empty bytes. Therefore, the memory can be reduced by 4 bytes as compared with FIG.
[0007]
[Problems to be solved by the invention]
However, in the stack area allocation method by such a conventional compiler, the allocation order is changed from the largest type to the smallest type. For example, in the case of an architecture whose access range differs depending on the size of the type, stack There is a problem that the number of accesses to a variable located behind the area (that is, a variable with a small type size) increases, resulting in poor efficiency.
[0008]
FIG. 7 is a conceptual diagram showing a range in which the stack area can be accessed by one instruction, and the access range (the range of 1-byte access) for the variable located at the end of the stack area is the narrowest. Therefore, for example, since V 11 to V 14 in FIG. 5 cannot be accessed at a time, there is a problem that the execution speed of the program becomes slower as the call frequency of the variable having a smaller type size increases.
[0009]
【the purpose】
Therefore, an object of the present invention is to solve the problem of a decrease in execution speed when applied to an architecture whose access range differs depending on the type size by reversing the variable allocation order.
[0010]
[Means for Solving the Problems]
In order to achieve the above object, the present invention provides a step of allocating each variable according to type size, a step of selecting the sort order of the variables as either ascending or descending, and a size when ascending order is selected. characterized in that the sort of small variable to large variable, comprising the steps of rearranging to less variable from longer variables when descending is selected, the steps of allocating the stack area in the order of the sort, the And
Note that the ascending order may be selected when the required specifications of the system prioritize the file size or speed, and the descending order may be selected when the required specifications prioritize the stack size reduction.
[0011]
Also, a step of allocating each variable according to type size, a step of rearranging from a small variable to a large variable in ascending order, and a step of allocating to the stack area in the order of rearrangement so that the small variable comes first And dividing the total size for each allocated size by a predetermined size, allocating the quotient part according to the order of the sizes, and allocating the remainder of the division after the allocation is completed. , Including.
The predetermined size may be a size that can be accessed with one instruction.
[0012]
Also, a step of allocating each variable according to type size, a step of rearranging from a small variable to a large variable in ascending order, and a step of allocating to the stack area in the order of rearrangement so that the small variable comes first And dividing a variable in the stack area and allocating the divided portion to the end of the stack.
[0013]
[Action]
In the present invention, a variable having a small size is placed in front of the stack area. Therefore, even when applied to an architecture whose access range differs depending on the type size, a small variable can be accessed with one instruction, and the execution speed of the program can be improved.
[0014]
【Example】
Embodiments of the present invention will be described below with reference to the drawings.
1 to 4 are views showing an embodiment of a stack area allocation method by a compiler according to the present invention.
In FIG. 1, 1 is a pre-processing unit, and 2 is a variable allocation unit. As shown in FIG. 2, the preprocessing
[0015]
Again, in FIG. 1, 20 and 21 are stack areas to which variables are assigned, but 20 corresponds to limb (1) and 21 corresponds to limb (2). In the stack area 20, as in the conventional example described at the beginning, each variable is rearranged in descending order from the largest size to the smallest size, and assigned so that the large size variable comes first. On the other hand, in the stack area 21, the variables are rearranged in ascending order from the smallest size to the largest, and assigned so that the small size variable comes first.
[0016]
For example, 4 bytes of variables V 1 to V 4 are allocated to the 4th line from the first line of the
[0017]
Here, a range that can be accessed with one instruction is shown between the two stack areas 20 and 21 according to the size of the mold. In the case of 4-byte data access, the entire area falls within the range, but 2-byte data access and 1-byte data access are limited to a part of the area.
Therefore, when the variables V 11 to V 14 in the left stack area 20 are accessed, it is necessary to perform 1-byte access with a plurality of instructions, which is not efficient, but the variables V 11 to V 14 in the right stack area 21 are set. In the case of access, since the variables V 11 to V 14 are located at the head of the area, that is, within the range of 1-byte access, only one instruction is required and efficiency is high.
[0018]
As described above, according to the present embodiment, by arranging the variable allocation in the stack area in ascending order, it is possible to improve the access efficiency with respect to a variable having a small type size, and to obtain an excellent effect that the execution speed of the program can be improved. . In the case of prioritizing the stack size, the assignment may be in descending order as before, and “ascending order” and “descending order” may be appropriately selected according to the required specifications.
[0019]
Also, when sorting variables in ascending order, the total size of each type of variable is divided by a predetermined size, the quotient part is the target of sorting, and the remainder is allocated after the sorting order. You may do it.
FIG. 3 is a schematic flow of the rearrangement. In this flow, first, in
[0020]
For example, as shown in FIG. 4 (a), when data having a 1-byte type ("1" in the figure) continues nine times, the 1-byte type data can be accessed with one instruction. If the range is A, the total size of this data type is 9 bytes, and the maximum boundary alignment value is 8 bytes, so the quotient part is 8 bytes and the remainder part is 1 byte. Therefore, in this case, the last 1 byte of 1-byte type data is allocated at the end of the stack.
[0021]
Or, if it is a variable that can be divided in the stack, it can be as follows. For example, as shown in FIG. 4B, when this variable can be divided by one variable (“5” in the figure) having a 5-byte type, the 3-byte portions (3) and 2 It may be divided into a byte part (2) and the 2-byte part (2) may be allocated at the end of the stack.
[0022]
【The invention's effect】
According to the present invention, by arranging the variable allocation in the stack area in ascending order, even when applied to an architecture whose access range differs depending on the type size, a small variable can be accessed with one instruction, and the execution speed of the program is improved. it can.
[Brief description of the drawings]
FIG. 1 is a conceptual diagram of an embodiment.
FIG. 2 is a schematic flow of pre-processing of one embodiment.
FIG. 3 is a schematic flow of variable division that is preferably applied to one embodiment.
FIG. 4 is a conceptual diagram of variable division that is preferably applied to one embodiment.
FIG. 5 is a conceptual diagram of a conventional stack area.
FIG. 6 is a relationship diagram between the declaration order of variables and the memory reduction effect.
FIG. 7 is a conceptual diagram showing a relationship between a mold size and an access range.
[Explanation of symbols]
V 1 ~V 14: variable 20 and 21: the stack area
Claims (5)
前記変数を並べ替える順序を昇順、降順のいずれかに選択するステップと、
昇順が選択されたときはサイズの小さい変数から大きい変数へと並べ替え、降順が選択されたときはサイズの大きい変数から小さい変数へと並べ替えるステップと、
該並べ替えの順番でスタック領域に割り付けるステップと、を含むことを特徴とするコンパイラによるスタック領域割り付け方法。Distributing each variable by type size; and
Selecting the order of rearranging the variables as either ascending or descending;
Reordering from a small variable to a large variable when ascending order is selected , and reordering from a large variable to a small variable when descending order is selected ;
Stack area allocation method according to the compiler, which comprises the steps of: allocating a stack area in the order of the sort.
該要求仕様がスタックサイズの削減を優先する場合は前記降順を選択することを特徴とする請求項1に記載のコンパイラによるスタック領域割り付け方法。2. The stack area allocation method by a compiler according to claim 1, wherein the descending order is selected when the requirement specification gives priority to the reduction of the stack size.
サイズの小さい変数から大きい変数へと昇順で並べ替えるステップと、Reordering small to large variables in ascending order;
サイズの小さい変数が先頭にくるように該並べ替えの順番でスタック領域に割り付けるステップと、Allocating the stack area in the order of the rearrangement so that the variable with the smallest size comes first,
前記振り分けられたサイズ毎のトータルサイズを所定のサイズで除算し、商の部分は前記サイズの順序に従って割り付けを行うステップと、Dividing the total size for each allocated size by a predetermined size, and assigning the quotient portion according to the order of the sizes;
前記除算の余りの部分を前記割り付けが終了した後に割り付けるステップと、を含むことを特徴とするコンパイラによるスタック領域割り付け方法。Allocating the remainder of the division after the allocation is completed, and a stack area allocation method by a compiler.
サイズの小さい変数から大きい変数へと昇順で並べ替えるステップと、Reordering small to large variables in ascending order;
サイズの小さい変数が先頭にくるように該並べ替えの順番でスタック領域に割り付けるステップと、Allocating the stack area in the order of the rearrangement so that the variable with the smallest size comes first,
前記スタック領域内で変数を分割し、該分割された部分をスタックの最後に割り付けるステップと、を含むことを特徴とするコンパイラによるスタック領域割り付け方法。Splitting a variable in the stack area and allocating the divided part to the end of the stack.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP29245394A JP3625878B2 (en) | 1994-11-28 | 1994-11-28 | Stack area allocation method by the compiler |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP29245394A JP3625878B2 (en) | 1994-11-28 | 1994-11-28 | Stack area allocation method by the compiler |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH08153006A JPH08153006A (en) | 1996-06-11 |
| JP3625878B2 true JP3625878B2 (en) | 2005-03-02 |
Family
ID=17782004
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP29245394A Expired - Lifetime JP3625878B2 (en) | 1994-11-28 | 1994-11-28 | Stack area allocation method by the compiler |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3625878B2 (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN112506660B (en) * | 2020-12-09 | 2024-10-29 | 北京百瑞互联技术股份有限公司 | Method, device and storage medium for optimizing audio and video coder and decoder memory |
-
1994
- 1994-11-28 JP JP29245394A patent/JP3625878B2/en not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JPH08153006A (en) | 1996-06-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5303357A (en) | Loop optimization system | |
| US5212794A (en) | Method for optimizing computer code to provide more efficient execution on computers having cache memories | |
| US5930508A (en) | Method for storing and decoding instructions for a microprocessor having a plurality of function units | |
| US7730281B2 (en) | System and method for storing immediate data | |
| JPS6014341A (en) | Trap interrupt system for basic instruction set computer system | |
| JPH04172533A (en) | Electronic computer | |
| JP3422743B2 (en) | Ways to increase memory utilization | |
| DE69630416T2 (en) | Microprocessor for executing commands with variable lengths | |
| US5418919A (en) | Apparatus and method for concurrently executing plural tasks in which identifiers specify steps in tasks | |
| JP3625878B2 (en) | Stack area allocation method by the compiler | |
| US6571387B1 (en) | Method and computer program product for global minimization of sign-extension and zero-extension operations | |
| US7240341B2 (en) | Global constant pool to allow deletion of constant pool entries | |
| US8146063B2 (en) | Translation of a series of computer instructions | |
| CA1261480A (en) | System for controlling data transfer instruction with extension storage device | |
| JPH01118931A (en) | Program conversion method | |
| US6421825B2 (en) | Register control apparatus and method thereof for allocating memory based on a count value | |
| US6173443B1 (en) | Method of compiling a loop | |
| US6029003A (en) | Method of assigning external variables to memories when compiling source program | |
| JPH06103462B2 (en) | Vector length control range division processing method | |
| JPH0713770A (en) | Compile method when using additional register of load store type processor | |
| JPS62107339A (en) | Instruction constituting method for microcomputer | |
| JPH0233188B2 (en) | ||
| CA2018182C (en) | Data processor for high-speed access to stack area data | |
| Papachristou et al. | Microcontrol architectures with sequencing firmware and modular microcode development tools | |
| Bartlett | The HP 3000 computer system |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040525 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040722 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040907 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041104 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041130 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041201 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071210 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081210 Year of fee payment: 4 |
|
| S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081210 Year of fee payment: 4 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091210 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091210 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101210 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111210 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111210 Year of fee payment: 7 |
|
| S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
| S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111210 Year of fee payment: 7 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111210 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121210 Year of fee payment: 8 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131210 Year of fee payment: 9 |
|
| EXPY | Cancellation because of completion of term |