SSGの質問
名無し
2017/03/08(Wed) 22:19 No.74
SSGを作成しててわからないことがあるので質問です
アドレスネーミングで負の整数を表示させる方法を教えてください
書式指定フィールドの説明を見る限りだと
d:符号付き 10 進整数
と書いてあるので負の値もとりそうなのですが
_mem,0x400000,1,num,エラー,%+d
この式でアドレスの値がFFだとすると+255と表示されてしまいます
これを-1と表示させるにはどうしたらいいのでしょうか
名無し
2017/03/08(Wed) 22:19 No.74
Re: SSGの質問
amateur
2017/03/08(Wed) 23:29 No.75
私もそれは気になっていたことなのですが、
アドレスネーミングでサイズを1バイト指定して、「%d」と書式指定しても負数を表示できないのは仕様みたいです。
正確には、「%d」「%+d」と書式指定して負数を表示できるのは、サイズを4バイトと指定した場合だけみたいです。(1バイト、2バイトでは負数表示できない)
これを何とかするにはSpoilerAL本体の修正バッチが必要かもしれませんので、
続きは、こちらのスレに書込みます。
https://necocan-index.rick-addison.com/bbs/patio.cgi?read=4&ukey=0
アドレスネーミングでサイズを1バイト指定して、「%d」と書式指定しても負数を表示できないのは仕様みたいです。
正確には、「%d」「%+d」と書式指定して負数を表示できるのは、サイズを4バイトと指定した場合だけみたいです。(1バイト、2バイトでは負数表示できない)
これを何とかするにはSpoilerAL本体の修正バッチが必要かもしれませんので、
続きは、こちらのスレに書込みます。
https://necocan-index.rick-addison.com/bbs/patio.cgi?read=4&ukey=0
amateur
2017/03/08(Wed) 23:29 No.75
Re: SSGの質問
amateur
2017/03/09(Thu) 02:49 No.76
上記のリンク先のスレの(No.450)の最後の部分と(No.451)の最後の部分のやり取りで解決したのですが、
結論から言いますと、0xFFを-1とアドレスネーミングで表示させることは可能ですが、
従来のアドレスネーミングの書式「_mem」では無理のようです(SpoilerALの仕様が原因)。
変態紳士さんのSpoilerAL修正パッチを適用し、ヘッダを「SSG for SpoilerAL ver 6.2」とした上で、
_fmt, _I1toI4\:\:([\:0x400000\:1]), 4,num ,??,%+d
または、
<# I1toI4\:\:[\:0x400000\:1],%+d #>
のように書くと、負の整数を表示させることが可能です。
なお、"_fmt"や、"<# (アドレス書式),%d #>" はSpoilerAL修正パッチにより新たに追加されたアドレスネーミングの書式です。
"_fmt"等の詳しい説明ですが、SpoilerAL修正パッチの解凍したファイルの中に「HowToSSG」というフォルダがありますので、
その中のファイルを、SpoilerALのフォルダにある同名フォルダの中に上書きしてください。
そうすると、SpoilerAL修正パッチで追加された機能の説明がHowToSSGに追加されます。
「アドレスネーミング」の欄に"_fmt"等の書式や説明がありますのでご覧ください。
"I1toI4"についても同様に新たに追加された演算子で、
符号付32bitキャスト(1バイトの値を4バイトに符号拡張する)というものだそうです。
上記の要領で更新されたHowToSSGの「アドレス」の項目をご覧ください。
_fmt と _mem の違いは、従来の"_mem"が指定アドレスの値をメモリから読み取るのに対し、
"_fmt"は、書いた値をそのまま表示(0と書けば0と表示。ただし、アドレスコーディングを使用して演算結果の値を表示させることも可能)するもので、
指定アドレスにアクセスしてメモリ上の値を読み取るのではありません。
例を挙げると、
_fmt, _[\:0x400000\:], 4,num ,??,%d
と
_mem, 0x400000, 4,num ,??,%d
は、同じ値を表示します。
結論から言いますと、0xFFを-1とアドレスネーミングで表示させることは可能ですが、
従来のアドレスネーミングの書式「_mem」では無理のようです(SpoilerALの仕様が原因)。
変態紳士さんのSpoilerAL修正パッチを適用し、ヘッダを「SSG for SpoilerAL ver 6.2」とした上で、
_fmt, _I1toI4\:\:([\:0x400000\:1]), 4,num ,??,%+d
または、
<# I1toI4\:\:[\:0x400000\:1],%+d #>
のように書くと、負の整数を表示させることが可能です。
なお、"_fmt"や、"<# (アドレス書式),%d #>" はSpoilerAL修正パッチにより新たに追加されたアドレスネーミングの書式です。
"_fmt"等の詳しい説明ですが、SpoilerAL修正パッチの解凍したファイルの中に「HowToSSG」というフォルダがありますので、
その中のファイルを、SpoilerALのフォルダにある同名フォルダの中に上書きしてください。
そうすると、SpoilerAL修正パッチで追加された機能の説明がHowToSSGに追加されます。
「アドレスネーミング」の欄に"_fmt"等の書式や説明がありますのでご覧ください。
"I1toI4"についても同様に新たに追加された演算子で、
符号付32bitキャスト(1バイトの値を4バイトに符号拡張する)というものだそうです。
上記の要領で更新されたHowToSSGの「アドレス」の項目をご覧ください。
_fmt と _mem の違いは、従来の"_mem"が指定アドレスの値をメモリから読み取るのに対し、
"_fmt"は、書いた値をそのまま表示(0と書けば0と表示。ただし、アドレスコーディングを使用して演算結果の値を表示させることも可能)するもので、
指定アドレスにアクセスしてメモリ上の値を読み取るのではありません。
例を挙げると、
_fmt, _[\:0x400000\:], 4,num ,??,%d
と
_mem, 0x400000, 4,num ,??,%d
は、同じ値を表示します。
[添付]: 764 bytes
amateur
2017/03/09(Thu) 02:49 No.76
Re: SSGの質問
名無し
2017/03/09(Thu) 19:45 No.77
返信ありがとうございます
負の整数を表示することができるようになりました
_memの1バイト指定だと仕様上できないことだったんですねぇ
変態紳士さんのパッチは使ってたんですけど
これは・・・難しいですね
_fmtはいまいち理解してなかったんですけど、やっと意味がわかりました
詳しい説明本当にありがとうございました
負の整数を表示することができるようになりました
_memの1バイト指定だと仕様上できないことだったんですねぇ
変態紳士さんのパッチは使ってたんですけど
これは・・・難しいですね
_fmtはいまいち理解してなかったんですけど、やっと意味がわかりました
詳しい説明本当にありがとうございました
名無し
2017/03/09(Thu) 19:45 No.77