アカウント名:
パスワード:
いや、最終版に落ちるの早すぎ。もっと努力せよ。
str2num macro string:REQK/ecode>というこれを<ecode>str2num macro string:REQ, base:=10K/ecode>と書き直す。その上で<ecode> ; resに10をかける mov eax, res mov ebx, 10
という部分を
; resに 底 をかける mov eax, res mov ebx, base
.RADIX は値を設定したり開放したりが面倒ですよね。いままでn進数だったのを一時的に16進数でチェックして、再びn進数に戻す…なんてことができない。
そのニーズが出た段階で、私はcygwin の m4 + as + gcc -mingw に逃げてしまいます(^^;)。# MASM より古いけれど、m4 の方がマクロとして高機能。# m4 があるなら MASMよりも「マクロ機能のない」asの方が快適。
うーわー、面倒な質問を初心者の日記で…。
以下の説明に出てくる文法の多くは MASM には存在しない文法です。 という注意書きを最初に書かなくちゃいけないじゃないか。
というわけで、MASMにはない文法のお話。MASMでは実装できません。
.
たとえば。Express_RADIX()という命令があるとしましょう。Express_RADIX(val, base)のように使い、val は「数値表現」、base は基数を『現在の基数で』表したものとします。# つまり val はマクロにとっては文字列であって、『現在の基数』の影響を受けない。
compare_2_order macro val:REQ, base:=<10> .IF val
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常
何故それが最終版… (スコア:1)
いや、最終版に落ちるの早すぎ。もっと努力せよ。
という部分を
fjの教祖様
Re: (スコア:1)
str2num macro string:REQ, base:=<10>
じゃないとダメかも。
もしかしたら、バージョンによってエラーは出ないのかもしれませんが、とりあえず<>で囲んでおいたほうが良いかと。
>実は MASM で base が 2,3,4,5,6,7,8,9,10 のどれかであることをチェックするのは意外と面倒なので省略。
あまり気にしたこと無いけど、10 で進数取れませんかね?
.IF eax >= 10
と書くと、eax が現在の .RADIX で一桁で表現できる数値の範囲外か判定できるかと。
(ただ、ASSUME eax:SDWORD されていると (DWORD PTR eax) >= 10 と書かないとダメですが)
Re: (スコア:1)
.RADIX は値を設定したり開放したりが面倒ですよね。
いままでn進数だったのを一時的に16進数でチェックして、再びn進数に戻す…なんてことができない。
そのニーズが出た段階で、私はcygwin の m4 + as + gcc -mingw に逃げてしまいます(^^;)。
# MASM より古いけれど、m4 の方がマクロとして高機能。
# m4 があるなら MASMよりも「マクロ機能のない」asの方が快適。
fjの教祖様
Re: (スコア:1)
そもそも、.RADIX を変更するシーンってどういうものですか?
Re: (スコア:1)
うーわー、面倒な質問を初心者の日記で…。
以下の説明に出てくる文法の多くは MASM には存在しない文法です。
という注意書きを最初に書かなくちゃいけないじゃないか。
というわけで、MASMにはない文法のお話。MASMでは実装できません。
.
たとえば。Express_RADIX()という命令があるとしましょう。Express_RADIX(val, base)のように使い、val は「数値表現」、base は基数を『現在の基数で』表したものとします。
# つまり val はマクロにとっては文字列であって、『現在の基数』の影響を受けない。
fjの教祖様
Re:何故それが最終版… (スコア:1)
それに .RADIX で変更しなくても、特定数字列を任意真数の数値に変換するマクロを書けば良いし、そんなのとても簡単ですよ?
それをわざわざ不適合な記法の例で MASM はだめだというのなら、他の言語だって同じですよね?