問8令和6年度 春期テクノロジ系
同一メモリ空間で,転送元の開始アドレス,転送先の開始アドレス,方向フラグ及び転送語数をパラメータとして指定することによって,データをブロック転送できる機能をもつCPUがある。図のようにアドレス1001から1004のデータをアドレス1003から1006に転送するとき,指定するパラメータとして適切なものはどれか。ここで,転送は開始アドレスから1語ずつ行われ,方向フラグに0を指定するとアドレスの昇順に,1を指定するとアドレスの降順に転送を行うものとする。

- ア転送元の開始アドレス:1001,転送先の開始アドレス:1003,方向フラグ:0,転送語数:4
- イ転送元の開始アドレス:1001,転送先の開始アドレス:1003,方向フラグ:1,転送語数:4
- ウ転送元の開始アドレス:1004,転送先の開始アドレス:1006,方向フラグ:0,転送語数:4
- エ転送元の開始アドレス:1004,転送先の開始アドレス:1006,方向フラグ:1,転送語数:4
正解はエ
解説 本サイト独自(IPA公表のものではありません)
エ 転送元1001~1004と転送先1003~1006は重なっている。昇順では,先に1001を1003へ書き込むと,後で転送元1003を読む際に元のデータを失う。そこで高い側の1004から1006へ降順に4語を転送するので,方向フラグは1となる。
- ア 低い側の1001から昇順に転送すると,1001のデータを1003へ書いた後,その上書き済みの1003を転送元として読んでしまう。重なる領域での上書きを考慮していない。
- イ 方向フラグ1では開始アドレスから降順に進むため,1001と1003を開始点にすると,1001~1004から1003~1006への転送にならない。降順なのに低い側を開始点にした誤りである。
- ウ 1004と1006は降順転送の開始点として使う高い側のアドレスである。ここで方向フラグ0を指定すると,そこから昇順に進み,図の1001~1004を1003~1006へ対応させられない。
この解説は間違っています
この解説は,別のモデルによるレビューを受けています。
出典:令和6年度 春期 応用情報技術者試験 午前 問8