GCCバージョン4.9.4対応(バージョン1.1)
書籍サポートページ
で配布しているアセンブラ出力環境の,gccバージョン4.9.4対応版(v1.1版)です.
(2020/06/10公開)
※ 現時点での最新版です.書籍中では,
v1.0版を第4部で説明・利用
しているため,書籍の内容を忠実に再現したい場合にはそちらをご利用ください.
フリーソフトウェアですので,当然ながら無保証です.
各自の責任の下で利用してください.
対応アーキテクチャについて
v1.0版をベースとして,
Hello Worldのサンプルプログラムを実行可能なアーキテクチャ(execフォルダ)に
MIPS64が追加されています.
ツール類について
v1.0版と同等です.
修正内容について
(v1.0版からの修正一覧)
- v1.0版に存在した以下のバグを修正
(詳細は書籍の補足情報
を参照)
- AArch64のスタックポインタ設定の不備
- MSP430のgccビルドエラーの不備
- MSP430のスタックポインタ設定の不備
- PowerPCのgdbビルドエラーの不備
- ARM/Thumbのread/writeの戻り値の不備
- M32Cのシステムコール呼び出し処理の不備
- MN10300のシステムコールの戻り値の不備
- Moxieのレジスタコピーの不備
- Moxieのopenシステムコール処理のバグ対応
- RXのopenシステムコールの引数の不備
- CR16のスタックポインタの設定の不備
- SPARCのスライディング・ウィンドウのオーバーフローの不備
- AArch64のアセンブリ出力が環境によって異なる問題
- open()/read()/fopen()/fgets()によるファイルリードのサンプルを追加
- openフォルダ ... open()/read()によるファイルリードのサンプル
(execフォルダをベースとして,27アーキテクチャ中,openシステムコールが
未サポートのAArch64/AVR/MicroBlaze/RL78/SPARCを除く22アーキテクチャに対応)
- fopenフォルダ(cross2のみ) ... fopen()/fgets()によるファイルリードのサンプル
(printfフォルダをベースとして,17アーキテクチャ中,openシステムコールが
未サポートのAArch64/MicroBlaze/RL78/SPARCを除く13アーキテクチャに対応)
- 逆アセンブル出力にヘッダ情報を追加(objdumpの-xオプション)
- gdbビルドとシミュレータでの実行サンプル(execフォルダ)にMIPS64を追加
- Makefile整備
- README.txtにインストール必要なツール類の説明を追加
- シミュレータ実行時の1文字read/writeの整備
- 1文字入出力のみのアーキテクチャでは,サイズぶんのループで入出力を行う
- 通常のread/writeがある場合には,1文字ずつでなくまとめてread/writeする
- 各アーキテクチャのシミュレータ実行時,未サポートのシステムコールを
エラー扱いにする
- ARM/Thumb/CRISでopenシステムコールの強制フラグ設定を廃止
(ゼロがO_RDONLYとなるため)
- V850でレジスタ退避・復旧のサービス関数を拡充
- V850のprintfのスタートアップで,共通化のため __gp の参照を _gp に変更
- newlibが__gpを参照するため__gpを追加してあるが,&_gp == &__gp で
あるため,_gpを参照して問題無い
- printfでmainの呼び出しをstartmainの呼び出しに #define で変換することで,
lib-*.Sを共通化する
- printfでOPENFLAGSの指定を追加し,open()に渡すフラグをアーキごとに指定可能
にする
- RXでnewlib利用の際,newlibのバグ?により,open()が期待しないフラグで
呼び出されてしまうため
- sum.txtをorigにコピーする動作に変更
- 従来はorigフォルダをシンボリックリンクで設定した際に,sum.txtを正常に
参照することができなかったため(../sum.txtとして参照していたため)
メールは kozos(アットマーク)kozos.jp まで