イ ン ラ イ ンアセン ブ ラ と 組 み 込 みアセン ブ ラの 使 用f が 仮 想 メ ンバ 関 数 ではない 場 合 に __vcall_offsetof_vfunc(D, f)を 使 用 する と 、 有 効 であればアセンブ リ エ ラーを 発 生 させる 任意 の 値 を 返 し ます。7.2.9 非 ス タ テ ィ ッ ク メ ンバ 関 数 の 呼 び 出 し__mcall および __vcall で 始 ま る キーワード を 使 用 し て、 __asm 関 数 か ら 非 仮 想関 数 と 仮 想 関 数 を 呼 び 出 せます。 詳 細 については、 「メンバ 関 数 クラスのキーワード」 (ページ 7-26) を 参 照 して 下 さい。 スタティックメンバ 関 数 は 異 なるパラ メータを 受 け 取 るため (this がないなど)、 ス タテ ィ ッ ク メ ンバ 関 数 を 検出 する __mcall_is_static はあ り ません。 し たがっ て、 呼 び 出 し 側 は 既 にス タテ ィ ッ ク メ ンバ 関 数 の 呼 び 出 し に 特 化 さ れてい る と 考 え ら れます。非 仮 想 メ ンバ 関 数 の 呼 び 出 し例 7-6 に、 仮 想 ベース ま たは 非 仮 想 ベースのいずれかで 非 仮 想 関 数 を 呼 び 出すことができるコードを 示 します。例 7-6 非 仮 想 関 数 の 呼 び 出 し// rp contains a D* and we want to do the equivalent of rp->f() where f is a// nonvirtual function// all arguments other than the this pointer are already setup// assumes f does not return a structif __mcall_is_in_vbase(D, f)LDR r12, [rp]// fetch vtable pointerLDR r0, [r12, #-__mcall_offsetof_vbase(D, f)] // fetch the vbase offsetADD r0, r0, rp// do this adjustmentelseADD r0, rp, #__mcall_this_offset(D, f)endifBL __cpp(&D::f)// set up and adjust this// pointer for D*// call D::f仮 想 メ ンバ 関 数 の 呼 び 出 し例 7-7 (ページ 7-29) に、 仮 想 ベース ま たは 非 仮 想 ベースのいずれかで 仮 想 関数 を 呼 び 出 すこ と がで き る コー ド を 示 し ます。7-28 Copyright © 2002-2010 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0205IJNon-Confidential, ID 100419
イ ン ラ イ ンアセン ブ ラ と 組 み 込 みアセン ブ ラの 使 用例 7-7 仮 想 関 数 の 呼 び 出 し// rp contains a D* and we want to do the equivalent of rp->f() where f is a// virtual function// all arguments other than the this pointer are already setup// assumes f does not return a structif __mcall_is_in_vbase(D, f)LDR r12, [rp]// fetch vtable pointerLDR r0, [r12, #-__mcall_offsetof_vbase(D, f)] // fetch the base offsetADD r0, r0, rp// do this adjustmentLDR r12, [r0]// fetch vbase vtable pointerelseMOV r0, rp // set up this pointer for D*LDR r12, [rp]// fetch vtable pointerADD r0, r0, #__mcall_this_offset(D, f) // do this adjustmentendifMOV lr, pc// prepare lrLDR pc, [r12, #__vcall_offsetof_vfunc(D, f)] // calls rp->f()<strong>ARM</strong> DUI 0205IJ Copyright © 2002-2010 <strong>ARM</strong> Limited. All rights reserved. 7-29ID 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 and 198: イ ン ラ イ ンアセン ブ
- Page 199 and 200: イ ン ラ イ ンアセン ブ
- Page 201 and 202: イ ン ラ イ ンアセン ブ
- Page 203: イ ン ラ イ ンアセン ブ
- Page 207 and 208: イ ン ラ イ ンアセン ブ
- Page 209 and 210: イ ン ラ イ ンアセン ブ