[H8-ML(5096)] Re:関数名では無くアドレスに直接飛ぶには
From: "Koji Takeuchi" <ktakeuchi@xxxxxxxxxxxxxxxxx>
Date: 2004年11月19日(金)10時56分35秒
リストの皆様へ自己レスで御座います。

HIMにてコンパイルした結果です。
その記述により飛ばなかったり飛んだりすることが分かりました。

#define Func_1   ((void (*)(void))0x600) ----------------(1)

#define Func_1   ((void (*)())0x600)() ------------------(2)


void Func_0(void)
{
 Func_1;
 return;
}
以下はコンパイルした結果ですが。。。
(1)が飛ばないのはコンパイラの何かしらのオプションによる物なのでしょうか?

/*---------------------------(1の結果)-----------------------------*/

_Func_0:                         ; function: Func_0
          .LINE       194
          .LINE       196
          .LINE       197
/*---------------------------(2の結果)-----------------------------*/
_Func_0:                         ; function: Func_0
          .LINE       194
          .LINE       195
          JMP         @1536:24
          .LINE       196
          .LINE       197


たけうち

----- Original Message ----- 
From: "Koji Takeuchi" <ktakeuchi@xxxxxxxxxxxxxxxxx>
To: <h8@xxxxxxx>
Sent: Thursday, November 18, 2004 4:58 PM
Subject: [H8-ML(5091)] 関数名では無くアドレスに直接飛ぶには


> リストの皆様へ
>
> いつもお世話になっております。
>
> 質問で御座います。
>
> void Func_0(void)
> {
>     Func_1();
>     return;
> }
>
> として、Func_1()がロム領域の600番地から始まっていたとした場合。
>
> void Func_0(void)
> {
>     /* 600番地から始まるループ(関数)に飛びなさい */
>     return;
> }
>
> 上のコメント部、/*〜*/をC言語で表現できませんでしょうか?
>
>
> 以上、宜しくお願いします。
>
> たけうち
>
>
>
>

スレッド概略
[5091(R)](起点)
 └[表示中]
   ├[5097(1)]
   └[5098(2)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]