これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションのXNUMXつを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドsdccです。
プログラム:
NAME
sdcc-小型デバイスCコンパイラ
SYNOPSIS
sdcc [オプション] ファイル名
警告
このマニュアルページの情報は、SDCCの完全なドキュメントからの抜粋であり、
オプションの意味に限定されます。
完全で最新のドキュメントについては、 SDCC コンパイラ ユーザー ガイド.
DESCRIPTION
SDCC 無料のオープンソースで、リターゲット可能で、8ビット用に設計されたANSI-Cコンパイラを最適化しています
マイクロプロセッサ。 現在のバージョンは、Intel MCS51ベースのマイクロプロセッサ(8031、
8032、8051、8052など)、Dallas DS80C390バリアント、Freescale(以前のMotorola)HC08および
Zilog Z80ベースのMCU(z80、z180、gbz80、Rabbit2000 / 3000)。 他のターゲットに変更できます
マイクロプロセッサ、MicrochipPICのサポートは開発中です。
SDCC ASXXXXとASLINKの修正バージョン、無料のオープンソースのリターゲット可能なアセンブラーを使用します。
リンカ。
SDCC さまざまなマイクロコントローラーを利用するのに適した広範な言語拡張機能を備えており、
基盤となるハードウェアを効果的に。
SDCC 使用されます AXXXXXX & アリンク、フリーウェア、リターゲット可能なアセンブラーおよびリンカー。 SDCC 持っています
さまざまなマイクロコントローラーの利用に適した広範な言語拡張機能と
基盤となるハードウェアを効果的に。
コンパイラーでは、インラインアセンブラコードを関数のどこにでも埋め込むことができます。 の
さらに、アセンブリで開発されたルーチンを呼び出すこともできます。
PROCESSOR SELECTION OPTIONS
-mmcs51
MCS51(8051)ファミリのプロセッサのコードを生成します。 これがデフォルトです
プロセッサターゲット。
-mds390
DS80C390プロセッサーのコードを生成します。
-mds400
DS80C400プロセッサーのコードを生成します。
-mz80 Z80ファミリのプロセッサのコードを生成します。
-mhc08 GameBoyZ80プロセッサのコードを生成します。
-mz80 ZilogZ80ファミリのプロセッサのコードを生成します。
-mz180 ZilogZ180ファミリのプロセッサのコードを生成します。
-mr2k Rabbit 2000 / Rabbit3000プロセッサファミリのコードを生成します。」
-mr3ka Rabbit 2000 / Rabbit3000プロセッサファミリのコードを生成します。 XXXXXを確認してください」
-mgbz80
GameBoy Z80プロセッサのコードを生成します(アクティブに保守されていません)。
-mpic14
Microchip PIC 14ビットプロセッサ(p16f84およびバリアント)のコードを生成します。
開発、完全ではありません)。
-mpic16
Microchip PIC 16ビットプロセッサ(p18f452およびバリアント)のコードを生成します。
開発、完全ではありません)。
-mtlcs900h
Toshiba TLCS-900Hプロセッサのコードを生成します(保守されていない、完全ではありません)。
-mxa51 Phillips XA51プロセッサのコードを生成します(保守されていない、完全ではありません)。
-mstm8 STM8プロセッサのコードを生成します。
プリプロセッサ OPTIONS
-I
プリプロセッサが `<.. h> 'または` ..h'を検索する追加の場所
ファイル。
-D
マクロのコマンドライン定義。 プリプロセッサに渡されます。
-M プリプロセッサに、記述に適したルールを出力するように指示します。
各オブジェクトファイルの依存関係。 ソースファイルごとに、プリプロセッサは出力します
ターゲットがそのソースファイルのオブジェクトファイル名であり、そのソースファイルのXNUMXつのmake-rule
依存関係は、その中に「#include」されたすべてのファイルです。 このルールはXNUMX行または
長い場合は `\ '-改行を続けることができます。 ルールのリストはに印刷されています
前処理されたCプログラムの代わりに標準出力。 `-M ' 含意する `-E '.
-C コメントを破棄しないようにプリプロセッサに指示します。 と一緒に使用 `-E ' オプションを選択します。
-んん いいね `-M ' ただし、出力には、に含まれるユーザーヘッダーファイルのみが記載されています。
`#include" file "'。 `#includeに含まれるシステムヘッダーファイル'は省略されます。
-A 質疑応答)
プリプロセッサでテストされている場合は、質問の回答をアサートします
`#if #question(answer) 'などの条件付き。 `-A- ' 標準を無効にします
通常はターゲットマシンを説明するアサーション。
-A question
(回答)質問の回答をアサートします。
`#if #question(answer) 'などの条件付きプリプロセッサ。 `-A- ' を無効にします
通常はターゲットマシンを説明する標準アサーション。
-ウマクロ
マクロマクロの定義を解除します。 `-U ' オプションは結局評価されます `-D ' オプションが、しかし
いずれかの前に `-include ' `-imacros ' オプション。
-dM にあるマクロ定義のリストのみを出力するようにプリプロセッサに指示します
前処理の終了時に効果があります。 と一緒に使用 '-E' オプションを選択します。
-dD プリプロセッサに、すべてのマクロ定義を出力に渡すように指示します。
残りの出力の適切なシーケンス。
-dN いいね `-dD 'ただし、マクロの引数と内容は省略されています。 `#defineのみ
name 'が出力に含まれます。
リンカ OPTIONS
-L、 -lib パス<絶対 path 〜へ 追加の ライブラリ>
このオプションは、リンケージエディタの追加のライブラリ検索パスに渡されます。 The
パス名は絶対パスである必要があります。 追加のライブラリファイルは、
コマンドライン。 詳細については、「プログラムのコンパイル」セクションを参照してください。
--xram-loc
外部RAMの開始位置。デフォルト値は0です。入力した値は次のようになります。
XNUMX進数またはXNUMX進数の形式である必要があります。例: --xram-loc 0x8000 or --xram-loc 32768.
--code-loc
コードセグメントの開始位置、デフォルト値0。このオプションが
使用される割り込みベクタテーブルも指定されたアドレスに再配置されます。 値
入力は、XNUMX進数またはXNUMX進数の形式にすることができます。例: --code-loc 0x8000 or - コード-
LOC 32768.
--stack-loc
スタックポインタの初期値。 スタックポインタのデフォルト値は
0x07 レジスタバンク0のみが使用されている場合、他のレジスタバンクが使用されている場合、
スタックポインタは、使用される最も高いレジスタバンクの上の位置に初期化されます。
例えば。 レジスタバンク1および2が使用されている場合、スタックポインタはデフォルトでロケーションになります
0x18。 入力する値は、XNUMX進数またはXNUMX進数の形式にすることができます。 --stack-loc
0x20 or --stack-loc 32。 XNUMXつのレジスタバンクすべてが使用されている場合、スタックは次のようになります。
データセグメントの後に配置されます( --データ後のスタック)
--データ後のスタック
このオプションを使用すると、データの後にスタックが内部RAMに配置されます。
セグメント。
--data-loc
内部RAMデータセグメントの開始位置。デフォルト値は次のとおりです。 0x30を選択します。
入力する値は、XNUMX進数またはXNUMX進数の形式にすることができます。 --data-loc 0x20 or
--data-loc 32.
--idata-loc
間接的にアドレス指定可能な内部RAMの開始位置。デフォルト値は
0x80。 入力する値は、XNUMX進数またはXNUMX進数の形式にすることができます。 --idata-loc
0x88 or --idata-loc 136.
--out-fmt-ihx
リンカ出力(最終オブジェクトコード)はIntelHex形式です。 (これはデフォルトです
オプション)。
--out-fmt-s19
リンカ出力(最終オブジェクトコード)はMotorolaS19形式です。
MCS51 OPTIONS
-モデル-大
大規模モデルプログラムのコードを生成する詳細については、メモリモデルのセクションを参照してください。
このオプションを使用する場合、プロジェクト内のすべてのソースファイルをこれでコンパイルする必要があります
オプション。 さらに、標準ライブラリルーチンは小さなモデルでコンパイルされています。
再コンパイルする必要があります。
-モデル-小さい
スモールモデルプログラムのコードを生成する詳細については、メモリモデルのセクションを参照してください。
これがデフォルトのモデルです。
DS390 / DS400 OPTIONS
--モデル-flat24
24ビットフラットモードコードを生成します。 これは、ds390コードが唯一のコードです。
ジェネレータは現在サポートしており、使用時のデフォルトです -mds390.
--protect-sp-更新
ESP:SP更新中の割り込みを無効にします。
_--スタック-10ビット
DallasDS10C80パーツの390ビットスタックモードのコードを生成します。 これは
ds390コードジェネレーターが現在サポートしている唯一の機能であり、
-mds390。 このモードでは、スタックは内部の下位1Kに配置されます
にマップされているRAM 0x400000 。 サポートが不完全であることに注意してください
スタックポインタとして引き続き256バイトを使用します。 これは、下位XNUMXのみが
潜在的な1Kスタックスペースのバイトが実際に使用されます。 ただし、これは
データとに使用するために貴重な256バイトの低RAMを再利用できます
IDATAセグメント。 コンパイラは、プロセッサを配置するためのコードを生成しません
10ビットスタックモード。 プロセッサがこのモードになっていることを確認することが重要です
このオプションでコンパイルされたリエントラント関数を呼び出す前。 原則として、
これはで動作するはずです --スタック自動 オプション、しかしそれはテストされていません。 です
と互換性がありません --xstack オプション。 また、プロセッサが
24ビット連続アドレッシングモード(を参照) --モデル-flat24 オプション)。
Z80 オプション
--callee-saves-bc
呼び出された関数に常にBCを保存するように強制します。
--no-std-crt0
リンクするときは、標準のcrt0.oオブジェクトファイルをスキップしてください。 あなたはあなた自身を提供しなければなりません
リンク時のシステムのcrt0.o。
最適化 OPTIONS
--nogcse
グローバル部分式除去を行いません。このオプションは、
コンパイラは、コンパイラの一時的なものを格納するために、望ましくないほど大きなスタック/データスペースを作成します。
これが発生すると警告メッセージが生成され、コンパイラは
割り当てた追加バイト数を示します。 このオプションをお勧めします
使用しないでください #プラグマ ノクセ グローバル部分式をオフにするために使用できます
特定の関数のみの削除。
-不変なし
ループ不変最適化を行いません。これは理由によりオフになっている可能性があります
前のオプションについて説明しました。 実行されたループ最適化の詳細については
ループ不変条件のセクションを参照してください。このオプションは使用しないことをお勧めします。 #プラグマ
不変 特定の関数の不変最適化をオフにするために使用できます
のみ。
-誘導なし
ループ誘導の最適化は行いません。詳細については、セクションの強度低下を参照してください。
詳細。 このオプションは使用しないことをお勧めします。 #プラグマ 誘導なし することができます
特定の関数に対してのみ誘導最適化をオフにするために使用されます。
--nojtbound
switchステートメントが実装されている場合、境界条件チェックは生成されません
ジャンプテーブルを使用します。 このオプションは使用しないことをお勧めします。 #プラグマ
いいえ 特定のジャンプテーブルの境界チェックをオフにするために使用できます
機能のみ。
--noloopreverse
ループ反転の最適化は行いません。
その他 OPTIONS
-NS、 -コンパイルのみ
ソースをコンパイルしてアセンブルしますが、リンケージエディタは呼び出しません。
-E Cプリプロセッサのみを実行します。 指定されたすべてのCソースファイルを前処理して出力します
結果を標準出力に。
--スタック自動
ソースファイル内のすべての関数は、再入可能としてコンパイルされます。つまり、パラメーター
ローカル変数はスタックに割り当てられます。 このオプションをすべて使用する場合
プロジェクト内のソースファイルは、このオプションを使用してコンパイルする必要があります。
--xstack
割り当てるために外部RAMの最初の256バイトに疑似スタックを使用します
変数と受け渡しパラメーター。
--callee-saves function1 [、function2] [、function3]...。
コンパイラーは、デフォルトで、呼び出し元の保存規則を使用して、レジスター全体を保存します。
関数呼び出し。ただし、これにより、不必要なレジスタのプッシュとポップが発生する可能性があります。
大きな関数から小さな関数を呼び出す。 このオプションを使用して切り替えることができます
指定された関数名のレジスタ保存規則。 コンパイラは
これらの関数を呼び出すときにレジスタを保存しないでください。余分なコードは生成されません。
これらの関数が使用するレジスタを保存および復元するためのこれらの関数の開始と終了
機能、これはできます 実質的に コードを削減し、実行時のパフォーマンスを向上させる
生成されたコード。 将来的には、コンパイラー(手続き間分析を使用)は次のようになります。
各関数呼び出しに使用する適切なスキームを決定できます。 DO NOT つかいます
このオプションは、次のような組み込み関数用です。 _muluint...、このオプションが
ライブラリ関数適切なライブラリ関数を再コンパイルする必要があります
同じオプション。 プロジェクトが複数のソースファイルで構成されている場合は、すべてのソース
ファイルは同じものでコンパイルする必要があります --callee-saves オプション文字列。
- デバッグ
このオプションを使用すると、コンパイラはデバッグ情報を生成します。
で使用される SDCDB。 デバッグ情報は、.cdbを含むファイルに収集されます
拡大。
--regextend
このオプションは廃止され、サポートされなくなりました。
--noregparms
このオプションは廃止され、サポートされなくなりました。
--peep ファイル
このオプションは、のぞき穴で使用される追加のルールを使用するために使用できます
オプティマイザ。
-S 適切なコンパイルの段階の後で停止します。 組み立てないでください。 出力は
指定された入力ファイルのアセンブラコードファイル。
-わ_asmOption [、asmOption] ...]
asmOptionをアセンブラーに渡します。
-Wl_linkOption [、linkOption] ...]
linkOptionをリンカに渡します。
--int-long-reent
整数(16ビット)および長整数(32ビット)ライブラリは、再入可能としてコンパイルされています。 ノート
デフォルトでは、これらのライブラリは非再入可能としてコンパイルされます。
-循環的
このオプションにより、コンパイラーはそれぞれの情報メッセージを生成します。
ソースファイルの関数。 メッセージには、に関するいくつかの重要な情報が含まれています
関数。 コンパイラがコントロールで検出したエッジとノードの数
関数のフローグラフ、そして最も重要なのは循環的複雑度です。
--float-reent
浮動小数点ライブラリはリエントラントとしてコンパイルされます。
--nooverlay
コンパイラは、関数のパラメータとローカル変数をオーバーレイしません。を参照してください。
詳細については、「パラメータとローカル変数」セクションを参照してください。
--メインリターン
このオプションは、生成されたコードがモニタープログラムによって呼び出されるときに使用できます。
コンパイラは、「main」関数から戻ると「ret」を生成します。 The
デフォルトのオプションは、ロックアップ、つまり「ljmp」を生成することです。
-のぞき見なし
のぞき穴最適化を無効にします。
--のぞき見-asm
インラインアセンブラコードをのぞき穴オプティマイザに渡します。 これは原因となる可能性があります
インラインアセンブラコードへの予期しない変更、のぞき穴を通過してください
ソースファイルツリーで定義されたオプティマイザルール ' 使用する前に/peeph.def '
このオプション。
--iram サイズ
リンカに、RAMの内部使用量が指定された制限内にあるかどうかを確認させます
の値です。
--nostdincl
これにより、コンパイラがデフォルトのインクルードパスを
プリプロセッサ。
--nostdlib
これにより、コンパイラがデフォルトのライブラリパスを
リンカ。
-詳細
コンパイラが実行しているさまざまなアクションを示します。
-V コンパイラが実行している実際のコマンドを表示します。
中間 DUMP OPTIONS
次のオプションは、リターゲティングとデバッグを目的として提供されています。
コンパイラ。 これらは、によって生成された中間コード(iCode)をダンプする手段を提供しました。
コンパイルプロセスのさまざまな段階で人間が読める形式のコンパイラ。
--ダンプラウ
このオプションにより、コンパイラは中間コードを次のファイルにダンプします。
名前付き。 ダンプロー 中間コードが実行された直後
関数に対して、つまり最適化が行われる前に生成されます。 基本ブロック
この段階では、深さ優先探索で順序付けられているため、順番に並んでいない可能性があります
実行。
--dumpgcse
グローバル部分式除去後、iCodeのダンプをファイルに作成します
名前付き.dumpgcse。
--ダンプデッドコード
デッドコードの除去後、iCodeのダンプを次の名前のファイルに作成します
.dumpdeadcode。
--ダンプループ
ループ最適化後、iCodeのダンプを次の名前のファイルに作成します
filename> .dumploop。
--ダンプレンジ
ライブ範囲分析後、iCodeのダンプを次の名前のファイルに作成します
filename> .dumprange。
--dumlrange
すべてのシンボルの寿命範囲をダンプします。
--ダンプガサイン
レジスタの割り当て後、iCodeのダンプを次の名前のファイルに作成します
filename> .dumprassgn。
--ダンプランレンジ
iTempのライブ範囲のダンプを作成します
--ダンポール
上記のすべてのダンプが作成されます。
コピー
コンパイラのソースコード全体は、GNU General PublicLicenseの下で配布されています。
onworks.netサービスを使用してsdccをオンラインで使用する