の呟きは 25
買った
マイナンバーカード、申請から2週間経つけど
未だ音沙汰なし・・・
申請がかなり殺到してて混んでいるとかかな・・・- (UPD ) #
次はこれ
Dim s As String
Dim n As Integer
Do
Print "Number?"
Input s
If s = "end" Then
Exit Do
End If
n = CInt(s)
If n < 1 Then
Print "Invalid Input"
Continue Do
End If
If n Mod 15 = 0 Then
s = "FizzBuzz"
ElseIf n Mod 3 = 0 Then
s = "Fizz"
ElseIf n Mod 5 = 0 Then
s = "Buzz"
Else
s = CStr(n)
End If
Print s
Loop(omitted)
次は
n = CInt(s)次は n < 1 の部分
{lhs_reg} < {rhs_reg}
なので
{lhs_reg} - {rhs_reg} < 0
なので
SUBA {lhs_reg},{rhs_reg}
SRA {lhs_reg},15
とすれば
負数のときは-1 (True)、それ以外は0 (False)
になる
次は整数の一致判定の等号演算子
If n Mod 15 = 0 Then が動くようにするさて、さっきのn < 0は差分で求まるんだが
一致はどうすれば求まるのか・・・- (UPD ) #
愚直にやると等号演算子のたびにラベルを1つ消費することになるんだが・・・
サブルーチン化すると
大げさにはなるものの
ラベルの消費を抑えられる・・・レジスタ退避とかのコードが必要になるかもだが
if a - b = 0 -> -1 (True)
if a - b < 0 -> 0 (False)
if a - b > 0 -> 0 (False)
フラグレジスタ判定だと、ラベルジャンプが必須になる・・・ジャンプなしの強引だと・・・
SUBA {lhs},{rhs}
LD {rhs},{lhs}
XOR {rhs},=#FFFF
LAD {rhs},1,{rhs}
SRA {lhs},15
SRA {rhs},15
OR {lhs},{rhs}
XOR {lhs},=#FFFF
か?ジャンプやると
SUBA {lhs},{rhs}
JZE J1
LAD {lhs},-1
J1 XOR {lhs},=#FFFF
シンプルこれ、もうちょっとシンプルにできないかなあ
- (UPD ) #
https://abcnews.go.com/International/engineers-start-refloat-ship-stuck-egypts-suez-canal/story?id=76743668
Kaishaて、正式名称がそれだからか・・・?