イ ン ラ イ ンアセン ブ ラ と 組 み 込 みアセン ブ ラの 使 用7.2.3 組 み 込 みアセンブ リ と C/C++ との 式 の 相 違 点組 み 込 みアセンブ リ と C/C++ には 以 下 の 違 いがあ り ます。• アセンブラ 式 は 常 に 符 号 なしです。 同 じ 式 でも、 アセンブラ と C またはC++ では、 値 が 異 な る 場 合 があ り ます。 以 下 に 例 を 示 し ます。MOV r0, #(-33554432 / 2)MOV r0, #__cpp(-33554432 / 2)// result is 0x7f000000// result is 0xff000000• 先 行 ゼ ロ を 伴 う アセンブ ラ の 数 値 は 10 進 数 です。 以 下 に 例 を 示 し ます。MOV r0, #0700 // decimal 700MOV r0, #__cpp(0700) // octal 0700 == decimal 448• アセンブ ラ の 演 算 子 の 優 先 順 位 は、 C/C++ での 優 先 順 位 と 異 な り ます。以 下 に 例 を 示 し ます。MOV r0, #(0x23 :AND: 0xf + 1) // ((0x23 & 0xf) + 1) => 4MOV r0, #__cpp(0x23 & 0xf + 1) // (0x23 & (0xf + 1)) => 0• アセンブ ラ で 記 述 さ れる 文 字 列 の 終 端 は NULL ではあ り ません。DCB "Hello world!"DCB __cpp("Hello world!")// 12 bytes (no trailing null)// 13 bytes (trailing null)注アセンブ ラ の 規 則 は __cpp の 外 で 適 用 され、C または C++ の 規 則 は __cpp. S の中 で 適 用 されます。 詳 細 については、 「__cpp キーワード」 (ページ 7-24) を参 照 し て 下 さ い。7.2.4 組 み 込 みアセンブ リ 関 数 の 生 成1 つの 変 換 ユニ ッ ト 内 のすべての __asm 関 数 の 本 体 は、 <strong>ARM</strong> アセンブラに 渡される 1 つのフ ァ イルに 結 合 されるかのよ う にアセンブルされます。 アセンブラに 渡 されるアセンブリ ファイル 内 の __asm 関 数 の 順 序 は、 テンプレー ト の インスタンスを 使 用 して 生 成 される 関 数 を 除 き、 ソースファイル 内 での 順 序 と同 じになり ます。注復 帰 命 令 を 省 略 し た 場 合 、 フ ァ イル 内 の 1 つの __asm 関 数 の 最 後 から 次 の 関 数に 移 る こ と によ り 、 __asm 関 数 同 士 で 制 御 を 受 け 渡 すこ と が 可 能 です。7-22 Copyright © 2002-2010 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0205IJNon-Confidential, ID 100419
イ ン ラ イ ンアセン ブ ラ と 組 み 込 みアセン ブ ラの 使 用armcc を 呼 び 出 す 場 合 、 アセンブ ラ に よ って 生 成 さ れたオブジ ェ ク ト フ ァ イルが コ ンパ イ ラ のオブジ ェ ク ト フ ァ イ ルに 結 合 さ れます。 こ の 結 合 に 使 用 さ れる 部 分 リ ンクによって 1 つのオブジェ ク ト フ ァ イルが 生 成 されます。コンパイラは、 各 __asm 関 数 に 1 つの AREA デ ィ レ ク テ ィ ブを 生 成 し ます。例 7-2 にこの 例 を 示 します。例 7-2 __asm 関 数#include struct X{int x,y;void addto_y(int);};__asm void X::addto_y(int){LDR r2, [r0, #__cpp(offsetof(X, y))]ADD r1, r2, r1STR r1, [r0, #__cpp(offsetof(X, y))]BX lr}以 下 が 生 成 さ れます。AREA ||.emb_text||, CODE, READONLYEXPORT |_ZN1X7addto_yEi|#line num "file"|_ZN1X7addto_yEi| PROCLDR r2, [r0, #4]ADD r1, r2, r1STR r1, [r0, #4]BX lrENDPENDoffsetof は、cstddef ヘッダファイルから 取 得 される 通 常 の offsetof マクロであるため、__cpp() の 中 で 使 用 する 必 要 があ り ます。通 常 の __asm 関 数 は、 .emb_text という 名 前 の ELF セクションに 配 置 されます。つま り 、 組 み 込 みアセンブ リ 関 数 が イ ン ラ イ ン 展 開 さ れる こ と はあ り ません。ただし、 暗 黙 にインス タンス 生 成 されたテンプレー ト 関 数 と、 インラ イン 関数 のア ウ ト オブラ イ ン コ ピーは、 その 関 数 の 名 前 が 付 いた、 共 通 であ る こ とを 示 す 特 別 な 属 性 が 設 定 さ れたエ リ アに 配 置 さ れます。 これによ り、 この 種の 関 数 の 特 別 なセマンテ ィ ク スが 維 持 さ れます。<strong>ARM</strong> DUI 0205IJ Copyright © 2002-2010 <strong>ARM</strong> Limited. All rights reserved. 7-23ID 100419Non-Confidential,
- Page 1:
®RealViewCompilation Toolsバー
- Page 5 and 6:
目 次RealView Compilation Tools
- Page 7 and 8:
序 章本 章 では、 『RealVie
- Page 10:
序 章参 考 資 料ここでは
- Page 13 and 14:
序 章フィードバックARM Lim
- Page 15 and 16:
第 1 章はじめに本 章 では
- Page 17 and 18:
はじめに1.2 NEON ベク トル
- Page 19 and 20:
はじめにソース 言 語 モ
- Page 21 and 22:
第 2 章ARM コンパイラの 使
- Page 23 and 24:
ARM コンパイラの 使 い 方2
- Page 25 and 26:
ARM コンパイラの 使 い 方C
- Page 27 and 28:
ARM コンパイラの 使 い 方d
- Page 29 and 30:
ARM コンパイラの 使 い 方
- Page 31 and 32:
ARM コンパイラの 使 い 方
- Page 33 and 34:
ARM コンパイラの 使 い 方2
- Page 35 and 36:
ARM コンパイラの 使 い 方2
- Page 37 and 38:
ARM コンパイラの 使 い 方2
- Page 39 and 40:
ARM コンパイラの 使 い 方2
- Page 41 and 42:
ARM コンパイラの 使 い 方2
- Page 43 and 44:
ARM コンパイラの 使 い 方#
- Page 45 and 46:
ARM コンパイラの 使 い 方2
- Page 47 and 48:
ARM コンパイラの 使 い 方P
- Page 49 and 50:
ARM コンパイラの 使 い 方A
- Page 51 and 52:
ARM コンパイラの 使 い 方
- Page 53 and 54:
ARM コンパイラの 使 い 方a
- Page 55 and 56:
ARM コンパイラの 使 い 方2
- Page 57 and 58:
第 3 章NEON ベ ク ト ル 化
- Page 59 and 60:
NEON ベ ク ト ル 化 コ ンパ
- Page 61 and 62:
NEON ベ ク ト ル 化 コ ンパ
- Page 63 and 64:
NEON ベ ク ト ル 化 コ ンパ
- Page 65 and 66:
NEON ベ ク ト ル 化 コ ンパ
- Page 67 and 68:
NEON ベ ク ト ル 化 コ ンパ
- Page 69 and 70:
NEON ベ ク ト ル 化 コ ンパ
- Page 71 and 72:
NEON ベ ク ト ル 化 コ ンパ
- Page 73 and 74:
NEON ベ ク ト ル 化 コ ンパ
- Page 75 and 76:
NEON ベ ク ト ル 化 コ ンパ
- Page 77 and 78:
NEON ベ ク ト ル 化 コ ンパ
- Page 79 and 80:
NEON ベ ク ト ル 化 コ ンパ
- Page 81 and 82:
第 4 章コンパイラの 機 能
- Page 83 and 84:
コンパイラの 機 能}}return
- Page 85 and 86:
コンパイラの 機 能こ れ
- Page 87 and 88:
コンパイラの 機 能• 「__
- Page 89 and 90:
コンパイラの 機 能また、
- Page 91 and 92:
コンパイラの 機 能注サチ
- Page 93 and 94:
コンパイラの 機 能例 4-3
- Page 95 and 96:
コンパイラの 機 能4.2 プ
- Page 97 and 98:
コンパイラの 機 能• 「#p
- Page 99 and 100:
コンパイラの 機 能例 4-4 (
- Page 101 and 102:
コンパイラの 機 能例 4-7
- Page 103 and 104:
コンパイラの 機 能4.5 8 バ
- Page 105 and 106:
第 5 章コーディング 慣 行
- Page 107 and 108:
コーディング 慣 行5.1.2 最
- Page 109 and 110:
コーディング 慣 行5.1.4 ル
- Page 111 and 112:
コーディング 慣 行注ルー
- Page 113 and 114:
コーディング 慣 行変 数
- Page 115 and 116:
コーディング 慣 行5.2 コ
- Page 117 and 118:
コーディング 慣 行5.2.3 オ
- Page 119 and 120:
コーディング 慣 行5.3 関
- Page 121 and 122:
コーディング 慣 行最 初
- Page 123 and 124:
コーディング 慣 行一 方
- Page 125 and 126:
コーディング 慣 行3. 最
- Page 127 and 128:
コーディング 慣 行5.4.4 自
- Page 129 and 130:
コーディング 慣 行みを
- Page 131 and 132:
コーディング 慣 行関 数
- Page 133 and 134:
コーディング 慣 行5.5 デ
- Page 135 and 136:
コーディング 慣 行ARMv6 以
- Page 137 and 138:
コーディング 慣 行ハーフ
- Page 139 and 140:
コーディング 慣 行表 5-11
- Page 141 and 142:
コーディング 慣 行例 5-2
- Page 143 and 144:
コーディング 慣 行• VFPv3
- Page 145 and 146:
コーディング 慣 行RVCT の
- Page 147 and 148: コーディング 慣 行名 前
- Page 149 and 150: コーディング 慣 行注個
- Page 151 and 152: コーディング 慣 行• C ラ
- Page 153 and 154: コーディング 慣 行int main(
- Page 155 and 156: コーディング 慣 行5.8 C99
- Page 157 and 158: コーディング 慣 行フレキ
- Page 159 and 160: コーディング 慣 行void foo(
- Page 161 and 162: コーディング 慣 行C90 に
- Page 163 and 164: コーディング 慣 行 の 浮
- Page 165 and 166: 第 6 章診 断 メ ッ セージA
- Page 167 and 168: 診 断 メ ッ セージ6.1 診
- Page 169 and 170: 診 断 メ ッ セージ6.3 診
- Page 171 and 172: 診 断 メ ッ セージ6.5 診
- Page 173 and 174: 診 断 メ ッ セージ6.7 -W オ
- Page 175 and 176: 診 断 メ ッ セージ6.9 デー
- Page 177 and 178: 第 7 章インラインアセン
- Page 179 and 180: イ ン ラ イ ンアセン ブ
- Page 181 and 182: イ ン ラ イ ンアセン ブ
- Page 183 and 184: イ ン ラ イ ンアセン ブ
- Page 185 and 186: イ ン ラ イ ンアセン ブ
- Page 187 and 188: イ ン ラ イ ンアセン ブ
- Page 189 and 190: イ ン ラ イ ンアセン ブ
- Page 191 and 192: イ ン ラ イ ンアセン ブ
- Page 193 and 194: イ ン ラ イ ンアセン ブ
- Page 195 and 196: イ ン ラ イ ンアセン ブ
- Page 197: イ ン ラ イ ンアセン ブ
- Page 201 and 202: イ ン ラ イ ンアセン ブ
- Page 203 and 204: イ ン ラ イ ンアセン ブ
- Page 205 and 206: イ ン ラ イ ンアセン ブ
- Page 207 and 208: イ ン ラ イ ンアセン ブ
- Page 209 and 210: イ ン ラ イ ンアセン ブ