ARM® コンパイラ ユーザ ガイド

バージョン 6.6


目次

序章
本書について
本書の構成
用語集
表記規則
ご意見、ご感想
その他の情報
1 スタートガイド
1.1 ARM® コンパイラ 6 の概要
1.2 ARM® コンパイラのインストール
1.3 ARM® DS-5 から ARM® コンパイラへのアクセス
1.4 Keil® µVision® から ARM® コンパイラへのアクセス
1.5 Hello World の例のコンパイル
1.6 ベアメタル イメージの実行
1.7 ツールチェーンでサポートされている ARM アーキテクチャ
2 一般的なコンパイラ オプションの使用
2.1 必須の armclang オプション
2.2 ソース言語オプションの選択
2.3 最適化オプションの選択最適化オプションの選択
2.4 デバッグを支援するビルド
2.5 コードとデータをターゲット メモリにマッピングするためのリンカ オプション
2.6 診断メッセージの制御
2.7 浮動小数点オプションの選択
2.8 コンパイルツールのコマンドラインオプションの規則
3 最適化されたコードの記述
3.1 ループの最適化
3.2 関数のインライン展開
3.3 スタック消費量の調査
3.4 データ構造体のパッキング
4 C または C++ コードでのアセンブリおよび組み込み関数の使用
4.1 組み込み関数の使用
4.2 インライン アセンブリ コードの記述
4.3 C および C++ からのアセンブリ関数の呼び出し
5 コードとデータのターゲットへのマッピング
5.1 イメージを作成するときにリンカによって実行される処理
5.1.1 スキャッタ ファイルで制御できる内容
5.2 スキャッタ ファイルを使用したターゲットのペリフェラルのデータ項目の配置
5.3 スキャッタ ファイルを使用したスタックとヒープの配置
5.4 ルートリージョン
5.4.1 ルート領域に対する ABSOLUTE 属性の影響
5.4.2 ルート領域に対する FIXED 属性の影響
5.5 名前付きセクションでの関数とデータの配置
5.6 特定アドレスへの関数とデータの配置
5.6.1 特定のアドレスへの __at セクションの配置
5.6.2 __at セクションの配置に関する制限
5.6.3 __at セクションの自動配置
5.6.4 __at セクションの手動配置
5.6.5 __at セクションを使用したフラッシュ メモリでのキーの配置
5.6.6 固定位置への定数の配置
5.6.7 ROM へのジャンプ テーブルの配置
5.6.8 スキャッタロードを使用せずに特定のアドレスに変数を配置する方法の例
5.6.9 スキャッタロードを使用して特定のアドレスに変数を配置する方法の例
5.7 ARM® C および C++ ライブラリ コードの配置
5.7.1 ルート領域へのコードの配置
5.7.2 ARM® C ライブラリ コードの配置
5.7.3 ARM® C++ ライブラリ コードの配置
5.8 未割り当てセクションの配置
5.8.1 未割り当てセクションのデフォルトの配置規則
5.8.2 未割り当てセクションの配置を制御するためのコマンドライン オプション
5.8.3 未割り当てセクションの配置の優先順位
5.8.4 未割り当てセクションの配置に使用できる最大領域サイズの指定
5.8.5 .ANY セクションの配置アルゴリズムの使用例
5.8.6 領域の割り当て、セレクタ、および優先度の動作を示す next_fit アルゴリズムの例
5.8.7 .ANY セクションのソートアルゴリズムの使用例
5.8.8 リンカによって生成されたコンテンツによって .ANY セクションがオーバーフローしたときの動作
5.9 スキャッタ ファイルでのベニアの配置
5.10 スキャッタ ファイルの処理
5.10.1 スキャッタ ファイル内の -E のデフォルトの動作
5.10.2 スキャッタ ファイルでの他のプリプロセッサの使用
5.11 空きメモリブロックの予約
5.11.1 予約された空きメモリ ブロックの特性
5.11.2 空のメモリ ブロックを予約する例
5.12 境界へのページの整列
5.13 実行領域と入力セクションの整列
A 補足リファレンス情報
A.1 サポートレベルの定義
A.2 ARM® コンパイラにおける標準への準拠
A.3 ARM アーキテクチャ用 ABI(基本標準)への準拠
A.4 ARM® コンパイラ 6 で提供される GCC の互換性
A.5 ツールチェーンの環境変数
A.6 Clang と LLVM ドキュメント
A.7 参考資料

図の一覧

1-1 一般的なツール使用の流れ図
1-2 ARM DS-5 から ARM コンパイラ設定へのアクセス
1-3 Keil µVision から ARM コンパイラ バージョンへのアクセス
1-4 デバッグ コンフィギュレーション
3-1 パッキング属性またはプラグマのない構造体
3-2 パック属性を持つ構造体
3-3 1 バイト アライメントのプラグマ パックを持つ構造体
3-4 2 バイト アライメントのプラグマ パックを持つ構造体
3-5 4 バイト アライメントのプラグマ パックを持つ構造体
3-6 個々のメンバにパックされた属性を持つ構造体
5-1 固定実行領域のメモリマップ
5-2 .ANY コンティンジェンシ
5-3 スタック用の領域の予約
A-1 ARM コンパイラ 6 の統合境界

表の一覧

2-1 ソース言語のバリアント
2-2 最適化の例
2-3 最適化の例
2-4 一般的な診断オプション
2-5 浮動小数点選択のオプション
2-6 AArch32 用の浮動小数点リンケージ
3-1 ループの展開プラグマ
3-2 ループの最適化の例
3-3 ループの例
3-4 ループの例
3-5 ベクトル化可能ループおよびベクトル化不可能ループのアセンブリ コード
3-6 関数のインライン展開
3-7 -fno-inline-functions の影響
3-8 構造体または共用体へのメンバのパッキング
3-9 構造体のパッキング
3-10 個々のメンバのパッキング
5-1 入力セクションのプロパティ(.ANY セクションの配置)
5-2 入力セクションのプロパティ(next_fit を使用したセクションの配置)
5-3 入力セクションのプロパティ(sections_a.o)
5-4 入力セクションのプロパティ(sections_b.o)
5-5 descending_size アルゴリズムのソート順序
5-6 cmdline アルゴリズムのソート順序
A-1 ツールチェーンで使用される環境変数

リリース情報

ドキュメント履歴
発行 日付 機密保持ステータス 変更点
0606-00 04 11 月 2016 非機密扱い ARM コンパイラ v6.6 リリース

Non-Confidential Proprietary Notice

This document is protected by copyright and other related rights and the practice or implementation of the information contained in this document may be protected by one or more patents or pending patent applications. No part of this document may be reproduced in any form by any means without the express prior written permission of ARM. No license, express or implied, by estoppel or otherwise to any intellectual property rights is granted by this document unless specifically stated.

Your access to the information in this document is conditional upon your acceptance that you will not use or permit others to use the information for the purposes of determining whether implementations infringe any third party patents.

THIS DOCUMENT IS PROVIDED “AS IS”. ARM PROVIDES NO REPRESENTATIONS AND NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, NON-INFRINGEMENT OR FITNESS FOR A PARTICULAR PURPOSE WITH RESPECT TO THE DOCUMENT. For the avoidance of doubt, ARM makes no representation with respect to, and has undertaken no analysis to identify or understand the scope and content of, third party patents, copyrights, trade secrets, or other rights.

This document may include technical inaccuracies or typographical errors.

TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT WILL ARM BE LIABLE FOR ANY DAMAGES, INCLUDING WITHOUT LIMITATION ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF ANY USE OF THIS DOCUMENT, EVEN IF ARM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

This document consists solely of commercial items. You shall be responsible for ensuring that any use, duplication or disclosure of this document complies fully with any relevant export laws and regulations to assure that this document or any portion thereof is not exported, directly or indirectly, in violation of such export laws. Use of the word “partner” in reference to ARM’s customers is not intended to create or refer to any partnership relationship with any other company. ARM may make changes to this document at any time and without notice.

If any of the provisions contained in these terms conflict with any of the provisions of any signed written agreement covering this document with ARM, then the signed written agreement prevails over and supersedes the conflicting provisions of these terms. This document may be translated into other languages for convenience, and you agree that if there is any conflict between the English version of this document and any translation, the terms of the English version of the Agreement shall prevail.

Words and logos marked with ® or ™ are registered trademarks or trademarks of ARM Limited or its affiliates in the EU and/or elsewhere. All rights reserved. Other brands and names mentioned in this document may be the trademarks of their respective owners. Please follow ARM’s trademark usage guidelines at http://www.arm.com/about/trademark-usage-guidelines.php

Copyright © 2016, ARM Limited or its affiliates. All rights reserved.

ARM Limited. Company 02557590 registered in England.

110 Fulbourn Road, Cambridge, England CB1 9NJ.

LES-PRE-20349

非機密著作権情報

本書は、著作権などの権利により保護されており、本書に含まれる手順または実装に関する情報は 1 つ以上の特許または申請中の特許により保護されている可能性があります。本書のいかなる部分も、ARM から事前に書面による明示的な承諾なく、 何らかの形式や方法で無断複製することは許可されていません。 特に記載がない限り、明示的であるか黙示的であるかを問わず、また禁反言やその他いかなる知的財産権のライセンスを許諾するものではありません。

本書の情報には、実装により、いかなる第三者の特許も侵害されないことを確認する目的で情報を使用せず、第三者にもそれを許可しないと承諾することを条件としてアクセスすることができます。

本書は、「現状」のまま提供されます。ARM は、明示的、黙示的、または制定法上のいずれを問わず、いかなる表明も保証も行いません。これには、本書に関連した商品性、品質基準、非侵害、または特定目的への適合性に関する黙示的保証を含むが、 これに限定されません。疑義を避けるため、ARM は第三者の特許、著作権、営業機密、または他の権利の範囲および内容に関して、いかなる表明も行わず、識別や理解のための分析も行いません。

本書には、技術的に不正確な箇所および誤記が含まれる場合があります。

法により禁止されていない限りにおいて、ARM は本書の使用により生じた直接的、間接的、特別、付随的、懲罰的、または結果的損害などを含むすべての損害に対して、たとえそのような損害の可能性が事前に告知されていた場合でも、その原因および責任理論の如何に関わらず一切の責任を 負わないものとします。

本書には、商品のみが含まれています。本書の使用、複製、または開示が関連するあらゆる輸出法および輸出規制に完全に準拠し、本書が全体であれ一部であれ、該当する輸出法に違反して直接的または間接的に輸出されることがないことを保証する 責任を負うものとします。ARM のお客様に関連して「パートナー」という言葉が使用されている場合でも、他会社と提携関係を設立することや、言及することを意図するものではありません。ARM は、通知することなくいつでも本書を変更することができます。

本契約のいずれかの規定と、ARM と締結された本書の内容を含む署名済みの書面契約の間に矛盾がある場合、署名済みの書面契約を本契約の規定より優先するものとします。本書は、 便宜上、他言語に翻訳される場合がありますが、本書の英語版と翻訳との間に矛盾がある場合、契約書の英語版に含まれる規定を優先することに同意するものとします。

記号 ( ® または ™ ) が付いた言葉およびロゴは、ARM Limited や関連会社の EU またはその他の国における登録商標および商標です。All rights reserved.本書に記載されている他の製品名は、各社の所有する商標です。ARM の 商標の使用に関する次のガイドラインに従ってください。 http://www.arm.com/about/trademark-usage-guidelines.php

Copyright © 2016, ARM Limited or its affiliates. All rights reserved.

ARM Limited. Company 02557590 registered in England.

110 Fulbourn Road, Cambridge, England CB1 9NJ.

LES-PRE-20349

機密保持ステータス

本書は非機密扱いであり、本書を使用、複製、および開示する権利は、ARM および ARM が本書を提供した当事者との間で締結した契約の条項に基づいたライセンスの制限により異なります。

無制限アクセスは、ARM 社内による分類です。

製品ステータス

本書の情報は最終版であり、開発済み製品に対応しています。

Web アドレス

非機密扱いPDF file icon PDF 版ARM 100748_0606_00_ja
Copyright © 2016 ARM.All rights reserved.