Download
Magazine
Develop
Account
Download
Magazine
Develop
Login
Forgot Account/Password
Create Account
Language
Help
Language
Help
×
Login
Login Name
Password
×
Forgot Account/Password
Category:
Software
People
PersonalForge
Magazine
Wiki
Search
OSDN
>
Find Software
>
Scientific/Engineering
>
Electronic Design Automation/Assistance (EDA)
>
NOODLYBOX
>
Wiki
>
PicoBlazeAbi
NOODLYBOX
Description
Project Summary
Developer Dashboard
Web Page
Developers
Image Gallery
List of RSS Feeds
Activity
Statistics
History
Downloads
List of Releases
Stats
Source Code
Code Repository list
Subversion
View Repository
Ticket
Ticket List
Milestone List
Type List
Component List
List of frequently used tickets/RSS
Submit New Ticket
Documents
FrontPage
Title index
Recent changes
Communication
Forums
List of Forums
ヘルプ (6)
Open Discussion (1)
Mailing Lists
list of ML
News
edit
|
Title Index
|
Recent Changes
|
Showing Page History #66402
PicoBlazeAbi
PicoBlaze
のソフトウェアを作成するために使用できる言語は、基本的にはアセンブラしかありません。
ふつう、ABIはC言語とアセンブラ言語とで、お互いに呼び出しを行うための決まりごと(CコンパイラがCソースを機械語に翻訳するときの規則)のことなので、アセンブラしかない
PicoBlaze
にはABIなんてものはありません。
しかし、アセンブラだけでプログラムを書くとしても、いちいち「破壊レジスタ」が何であるかを気にしながらサブルーチンを呼び出すのは面倒なので、自分で書くルーチンに関しては自分で考えた規則でレジスタを操作することにしました。(オレ策定・オレ適用のオレオレABIです)
言葉の定義
ローカル~
ローカルとは、呼び出し元が不特定多数でなく、ある特定のルーチンからのみ呼び出さ れることを示します。 ABIの適用はされませんので、効率を優先してかまいません。
ローカルラベル
特定のルーチンからのみJUMP先として指定されるラベルのことです。
ローカルルーチン
特定のルーチンからのみCALL先として指定されるラベルのことです。
グローバル
不特定多数の呼び出し元から参照されるラベルのことです。
レジスタの使われ方
s0 ~ s5 の6個 スクラッチ
呼び出され側で自由に破壊できます。
呼び出し側から呼び出され側へ、引数を渡すために使用されます。
呼び出され側から呼び出し側へ、戻り値を渡すために使用されます。
s6 ~ sE の9個 通常
呼び出され側は破壊してはいけません(CALL直後の値とRET直前の値が同一であるこ とを保証しなければなりません)。
サブルーチンから戻ってきた後でも継続して使用したい値を格納するために、しば しば使用されます。
呼び出し側から呼び出され側へ、s0~s5では足りない場合に、引数を渡すために使 用されます。
sF データスタックポインタ
スクラッチパッド内の領域をデータスタックとして活用するために使用されます。
Z,Cフラグ
ローカルでないすべてのサブルーチンにおいて、呼び出され側は破壊してはいけま せん(CALL直後のフラグ状態と、RET直前のフラグ状態が同一であることを保証しな ければなりません)。
例外的に、bool値を返すサブルーチンでは、呼び出し側の条件ジャンプに供するた めに、ZおよびCフラグを更新してリターンすることができます。
コーディングルール
ローカルラベル
ローカルなサブルーチンやローカルなジャンプ先には、'_'で始まる名前を付けま す。
他バンクへのラベル
本体が別のバンクにあるサブルーチンには、'_'で終わる名前を付けます。