忍者ブログ

なんだか

知らないほうが幸せかもしれない

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

h8sxのmovmdの制限をgccで回避する

H8SXのブロック転送命令における制限事項というのがあります。

下のようなコードの場合は

00cc 01016976 mov.l @(4,er7),er6
00d0 01006975 mov.l @er7,er5
00d4 7BB4     movmd.l
00d6 01580506 mov.w @er5,@er6

メモリからer5に転送したあとに、movmdを実行するのではなく

00cc 01016976 mov.l   @(4,er7),er6
00d0 01006975 mov.l   @er7,er5
00d4 0000     nop
00d6 7BB4     movmd.l
00d8 01580506 mov.w   @er5,@er6

nopとかの命令を挿入しないとおかしな動作をしますよという事です。

gccには、こういう時に便利に使えるpeephole2という機能があります。
どういう機能かというと特定できる命令のパターンの組み合わせを登録しておくと
その命令のパターンの組み合わせを見つけた時に別の命令の組み合わせに変更できるのです。
(他にも、ある命令をarchに合わせて分解するようなことも出来るのです。)
命令の記述にはmd形式という形で表現されています。

movmd-movsd.patch

この中は覗かないほうがいいかもしれない。

peephole2は最適化オプションが1以上でないと機能しないので、ご注意を


拍手[0回]

PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

フリーエリア

最新CM

最新記事

(07/27)
(03/27)
(03/26)
(03/23)
(03/22)
(03/19)
(03/18)
(03/18)
(03/15)
(03/14)
(03/13)
(03/12)
(03/11)
(03/11)
(03/08)
(03/08)
(03/06)
(03/05)
(03/02)
(03/01)
(02/28)
(02/27)
(02/24)
(02/23)
(02/22)

プロフィール

HN:
kenrou
性別:
非公開

バーコード

ブログ内検索

最古記事

(12/15)
(12/16)
(12/17)
(12/18)
(12/19)
(12/20)
(12/21)
(12/22)
(12/23)
(12/24)
(12/25)
(12/26)
(12/27)
(12/28)
(12/29)
(12/30)
(12/31)
(01/01)
(01/02)
(01/21)
(01/22)
(01/23)
(01/24)
(01/24)
(01/28)

P R

忍者アナライズ

コガネモチ

忍者カウンター

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30