-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MZT出力の追加とCMT不具合の修正 #384
base: main
Are you sure you want to change the base?
MZT出力の追加とCMT不具合の修正 #384
Conversation
確認が遅くなっておりましてすみません。今週の課題とさせていただきます。 |
作業の開始が遅れてしまったので内容の理解とファイル形式の理解までしか進められませんでした。 他のアセンブラやツールの実装状況を確認して仕様を考えたいと思います。 |
こちらの仕様もあとで確認をします。 |
はい。構造としてアドレス情報は 1 つで、ローダはこのアドレス情報しか得られません。
こちらも END を拡張する必要はありません。
に格納することになりますが、どちらも現在の仕様・実装で得られますので。 |
コメントありがとうございます。CMTの仕様を考慮して考えていたのですが、ENDはやはり起動のアドレスを指定できるようにしておいて、第二引数が空いていればそこをロードアドレスにするのがいいと思いました。また第二引数が省略された場合にはORGの起動時のアドレスを使う方がよいかと思います。仕様の整合を考えたうえでもそれがベストと考えました。 |
END はMASM他でも起動アドレス指定が普通だと思います。(これ以外のものを知りません😓) |
内容
2件の修正になりましたが、相互に関係するので1件の PR となっているのをご承知おきください。
手動でのテスト、既存のテストが問題なく実行できることまでは確認しています。
申し訳ないですがMZT用のテストコードは追加できていません。
MZT 出力のオプション追加と実装
ヘルプ出力も含めて関連しそうな箇所は修正しているつもりです。
修正内容に不備、過不足ありましたら訂正お願いします。
CMT 出力の不具合修正
不具合内容
現在の処理では CMTヘッダのアドレスに実行開始アドレスを設定しているため、
格納先頭アドレス≠実行開始アドレスの場合に不整合が発生します。
不具合再現例
このアセンブル結果は次のとおりになります。
ここで開始アドレスが 1208 になっているため、ローダは 1208 からプログラムを配置します。
これは 1200 となるのが正しいです。