HiTEL 게제동(GMA) 공개자료실

PS용 GNU MIPS컴파일러및 예제
작성자:이호준(SkyWaver)
98-10-01
첨 부:[3071]psxcc.zip
압축은 pkunzip -d *.zip이렇게 디렉토리 지정옵션을 주셔서 풀면 됩니다. 그리고 배치파일 하나 실행하라고 하는데.. 이걸 해야 컴파일러환경변수가 지정됩니다. 배치파일은 이 유틸들이 들어 있는 폴더가 지정되있어야 하니.. 텍스트에디터로 배치파일을 한번 보세요 그럼.. < 담당자 주 > 아래는 이것을 설명한 Shift-JIS 코드를 완성형 일본어로 바꾸어 출력한 것입니다. 이 파일의 용도를 대략 알 수 있을 겁니다. --------------------------------------- mips クロス開? ∧뽑? 第一彈 --嫁委홋랴?) strip: mipsld -s (ファイル作成時のみ) ---  各プログラムを PATH の通ったディレクトリに置くだけで 特に設定は必 要ありません  設定の例を簡單に書いておきます --- Installation Human68k: mkdir c:/usr/psx/bin インスト ル場所の作成 move *.x c:/usr/psx/bin ファイルの移動 path %path%;c:/usr/psx/bin パスの設定 MS-DOS: mkdir c:\usr\psx\bin インスト ル場所の作成 move *.exe  ソ ス中でのレジスタ名の指定には GNU Assembler のレジスタ名ではな く 一般的なレジスタ名を使用します GNU Assembler 本來のレジスタ名で 指定を行ないたい場合は 後述する -N オプションを使用してください  レジスタ名とレジスタ番號との對應は以下の通りです  なお レジスタ名の大文字小文字は區別されません --- mips Register Name r0 ∼ r31 … 汎用レジスタ0から汎用レジスタ31に對應 zero, at, v0, v1, a0, a1, a2, a3 … r0 ∼ r7 に對應 t0, t1, t2, t3, t4, t5, t6, t7 … r8∼ r15 に對 應 s0, s1, s2, s3, s4, s5, s6, s7 … r16 ∼ r23 に對應 t8, t9, k0, k1, gp, sp, fp, ra … r24 ∼ r31 に對應 ---  16進數を表す文字として 從來の「0x…」に加えて 「$…」の表記も使 用可能となっています  出力するファイル名は 入力ファイル名の擴張子を .o に變更したものが 使用されます なお 入力ファイル名が不明(標準入力)の場合には -o オ プションで明示的に出力ファイル名を指定しない限りファイルは作成されま せん  實行時のオプションは以下のものが追加されています --- mipsas Options -N レジスタ名 16進數表記の擴張を禁止します (--native) このオプションを指定すると 「$…」形式のレジスタ名指定のみ が可能となり 16 進數の表記は「0x…」のみとなります -S ';' をコメント扱いとします マルチステ トメントのための區切り文字である ';' がコメント と同じ扱いになります -B mdebug セクションの削除を行ないま?  binary 形式は --oformat binary の代用形式です 複數セクションに分 かれたオブジェクトも正常に變換することができます  psx 及? ? binary 形式では各セクションは以下の順序で配置されます 1: .text .rodata/.rdata … TEXT (アドレス:_ftext ∼ _etext サイズ:_ltext) 2: .data .sdata … DATA (アドレス:_fdata ∼ _edata サイズ:_ldata) 3: .sbss .bss … BSS (アドレス:_fbss ∼ _ebss サイズ:_lbss)  各セクションの先頭アドレス及びサイズは 上記のラベル名で參照するこ とが可能です また gp レジスタの初期値としてラベル _gp に .sdata セ クションの先頭アドレス + $8000 が設定されています あらかじめラベル _ gp の値? 診舜狼랴튠お?ことで 任意のアドレスに設定することも可能です  gp レジスタを使用する(.sdata/.sbss セクションを宣言してある)プログ ラムでは 開始直後に la gp,_gp として gp レジスタの設定を行ない 必 要に應じて B作しないなどの不具合が潛んでいるかもしれま せん なお Human68k/Win32 版ともに まだ修正を加えている段階であり 設定方法等が今後大幅に變わる可能性もあるので注意が必要です  現時点で判明している問題点を以下に書いておきます ·as に間違ったファイルを入力すると暴走する場合がある · ld の一部のスクリプトが正常に動作しない場合がある ·その他いろいろ(泣) ■參考例  アセンブラのサンプルとして mult.s を同封しておきます アセンブル方 法は以下の通りです 詳細はソ スリストを參照してください 1. mult.s をアセンブルして mult.o を出力 mipsas mult.s 2. mult.o をリンクして mult.psx を出力 mipsld -Ttext 801F8000 -m psx mult.o  長いオプション名は判別が可能な程度まで短縮できます (この場合 -Tt, -mp) ■履歷 v2.8.1 初版: ·ようやくコンパイルが通って動い? 웍? ◆アセンブラ ·通常のレジスタ名の扱いを擴張 (Oh!MAGICOM 版のパッチを參考にしました ありがとうございます) v2.8.1+α1: ◆アセンブラ ·アセンブル途中で異常終了する仕樣を修正 ·C++ 風のコメントに對應 ·レジスタ名 r の追加 ·レジスタ名判定の高速化(氣分の問題)(笑) ·16進定數に '$' を使用できるようにし -N オプションを追加 ·-S オプションを追加 ·出力ファイル名(*.o)を自動生成 ◆リンカ ·出 力ファイル名(*.elf *.bin)を自動生成 v2.8.1+α2: ◆アセンブラ ·シフトJISコ ドに對應(文字列中のみ) ·.sbss セクションを明示的に指定できるように擴張 ·擬似命令 .byte .dc.b .ascii において 文字列と定數を同一  に扱えるように擴張 ·擬似命令 .insert (ファイルをそのまま取り む機能)を追加 ·擬似命令の先頭文字 . の省略に對應 ◆リンカ ·ファイル探索パスにプログラムと同じディレクトリを追加 ·binary 形式の複數セクション 對策のため bin 形式(*.bin)を追加 ·PS-X EXE (假稱)互換形式(*.psx)を追加 ◆その他 ·BFD64 (內部處理64ビット)に對應 ·各プログラムのコンパイル不備を修正 v2.8.1+α3: ◆アセンブラ ) ·ラベル _gp を任意の値に設定できるように修正