planetary days,

不惑とか嘘だよ。惑う惑う。ふらふらと。

Z80ASに関するレポート

2009年12月27日 | ..._〆(゜▽゜ )
紅茶羊羹氏にエラー状況をご報告しとかないと、ということで、GAME-MZのアセンブルエラー状況をまとめてみました。

・game-mz700.asmを、そのままWindows7上でアセンブルした場合
Error game-mz700.asm 69: Out of range on relative jump
が出てアセンブルならず。
# 利用したz80asのバージョンは0.03になります。

・上記の箇所をDB定義で強制回避してアセンブルした結果を、hojaでディスアセンブルして比較してみた所、5823H番地で謎の01H挿入が発生。

WinXP上での生成結果:
	CALL	Z0005		;581D	CD 0F 5D 	..]
	LD	A,(05F4CH)	;5820	3A 4C 5F 	:L_
	SUB	L		;5823	95 		.
	LD	C,A		;5824	4F 		O
	LD	A,(05F4DH)	;5825	3A 4D 5F 	:M_
	SBC	A,H		;5828	9C 		.
	LD	B,A		;5829	47 		G
	INC	BC		;582A	03 		.
	LDIR			;582B	ED B0 		..

Windows7上での生成結果(Vistaも同様):
	CALL	05D41H		;581D	CD 41 5D 	.A]
	LD	A,(05F4CH)	;5820	3A 4C 5F 	:L_
	LD	BC,04F95H	;5823	01 95 4F 	..O
	LD	A,(05F4DH)	;5826	3A 4D 5F 	:M_
	LD	BC,0479CH	;5829	01 9C 47 	..G
	INC	BC		;582C	03 		.
	LDIR			;582D	ED B0 		..

ラベル生成の状況も違うので、hojaの動作も少し怪しいところがあるのだけれど、ダンプを見ると確かに01Hが何故か挟まっていました。

内部のラベルテーブル生成というより、SUB命令が嫌われているっぽいのだけれど・・・
Windows Vistaになったからと言って変わる部分に思えないのに、XPとVista/Win7で吐き出すコードが変わるのは不思議でならない。
アセンブラソースは、こちらに同梱して置いてますので、ご確認いただけると幸いです。
コメント (2)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 12月26日(土)のつぶやき | トップ | 12月27日(日)のつぶやき »
最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Z80AS バグ修正 (youkan)
2010-01-05 20:59:43
お待たせいたしました、間違ったバイナリを吐くバグを修正いたしました。どうやらVista/7で動かないのではなく、XPでたまたま動いてしまっていただけのようです…。お恥ずかしい。
返信する
ありがとうございます! (peki)
2010-01-06 00:09:03
いやいや、そこまで追いかけられたら良かったのですが、力足りずで状況報告だけになってて申し訳ないです。
これでVM上げなくても、こっそりZ80のデバグができます(^-^)
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。