[H8-ML(3765)] Re: スタートアップルーチンのI/O定義
From: Kengo Jinno <kengo@xxxxxxxxxxxx>
Date: 2003年08月22日(金)16時07分00秒
神野です。

Fri, 22 Aug 2003 15:16:31 +0900 ごろに
<200308220616.h7M6GV9O027282@xxxxxxxxxxxxxxxxxxx> の
"[H8-ML(3764)] Re: スタートアップルーチンのI/O定義" のメールで
Shigeru Makino <mac@xxxxxxxxxxxxxx> さんは書きました。

> 3052マニュアルの「2.3アドレス空間」に記載されているよう、
> 1M mode動作時は、アドレスの上位ビットは無視されますので、
> 動作には支障ありません。
> 
> ただ、アセンブラーは言いつけ通り16Mのコードを作りますんで、
> サイズが大きくなり、実行速度も低下します。

そこが腑に落ちないんですが…
アドレッシングモードには8/16/24bitがありますが、
20/24bitの違いでそんなに差の出るコードを吐くんですか?

20bitのアドレッシングモードは無いので、上位4bitをゼロで
(あるいは1で)埋めた24bitのアドレッシングモードが使われるんじゃ
ないかと想像するのですが。

ディスプレースメント付きレジスタ間接なら、場合によっては
「24bitだったのが16bitで済む」ことがあるかもしれませんが、
特殊レジスタは上の方にまとまって配置されているので、
そういう状況は考えにくいです。

人間が書くコードなら、
・アドレス(ポインタ)をたくさん含んだ構造体で、
・RAM容量が厳しく、少しでもサイズを減らしたい
・20bitのビットフィールドにしてぎちぎちに詰める
ようなこともあるかもしれませんが、これはコンパイラが
そのように最適化(?)してくれるわけじゃありませんし。

-- 
神野健吾 <kengo@xxxxxxxxxxxx>
スレッド概略
[表示中](起点)
 └[3767(1)]


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


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