の呟きは 16
比較演算
ちゃんとフラグレジスタの確認をしないとだめそう・・・(-32767) - (2) = 32767
となって、符号ビットで大小チェックすると死ぬ・・・テキトーなコードが1000行超えそう・・・
これ
' *** FACTORS ***
Dim factor(20) As Integer
Dim count As Integer
Dim i As Integer
Dim n As Integer
Dim s As String
Print "Number?"
Input n
Print "Number is " & CStr(n)
If n < 2 Then
Print "Invalid Number"
Else
count = 0
i = 2
Do
Do Until n Mod i <> 0
factor(count) = i
count += 1
n = n \ i
Loop
i += 1
Loop While i * i <= n
If n > 1 Then
factor(count) = n
count += 1
End If
Print "FACTORS: " & CStr(count)
s = ""
For i = 0 To count - 1
s = s & CStr(factor(i)) & ", "
If Len(s) > 60 Then
Print s
s = ""
End If
Next i
If Len(s) > 0 Then
Print s
End If
End If
FACTORS START
; Print "Number?"
OUT LB1,LL1
; Input n
IN TB1,TL1
XOR GR1,GR1
LD GR2,TL1
CALL C2
LD GR2,GR0
LAD GR1,TB1
CALL C1
ST GR0,I4
; Print ("Number is " & CStr(n))
LD GR7,I4
LD GR3,GR7
LAD GR1,TB1
LAD GR2,TL1
CALL C5
LAD GR1,TB2
LAD GR2,TL2
LAD GR3,='Number is '
LD GR4,=10
CALL C9
LAD GR1,TB2
LAD GR2,TL2
LAD GR3,TB1
LD GR4,TL1
CALL C8
OUT TB2,TL2
; If (n < 2) Then
LD GR7,I4
LAD GR6,2
LAD GR0,=#FFFF
CPA GR7,GR6
JMI J30
XOR GR0,GR0
J30 LD GR7,GR0
AND GR7,GR7
JZE J29
; Print "Invalid Number"
OUT LB2,LL2
JUMP J28
; Else
J29 NOP
; count = 0
LAD GR7,0
ST GR7,I2
; i = 2
LAD GR7,2
ST GR7,I3
; Do
J31 NOP
; Do Until *1
LD GR7,I2
LD GR3,GR7
LAD GR1,TB2
LAD GR2,TL2
CALL C5
LAD GR1,TB1
LAD GR2,TL1
LAD GR3,='FACTORS: '
LD GR4,=9
CALL C9
LAD GR1,TB1
LAD GR2,TL1
LAD GR3,TB2
LD GR4,TL2
CALL C8
OUT TB1,TL1
; s = ""
LAD GR1,SB5
LAD GR2,SL5
LAD GR3,=0
LAD GR4,0
CALL C9
; For i = 0 To (count - 1) Step 1
LD GR7,I2
SUBA GR7,=1
ST GR7,T1
LAD GR7,0
ST GR7,I3
J40 NOP
LD GR1,I3
CPA GR1,T1
JPL J42
; s = (s & (CStr(factor(i)) & ", "))
LD GR7,I3
LD GR1,GR7
LAD GR2,21
CALL C12
LD GR7,GR0
LD GR7,IA1,GR7
LD GR3,GR7
LAD GR1,TB1
LAD GR2,TL1
CALL C5
LAD GR1,TB1
LAD GR2,TL1
LAD GR3,=', '
LD GR4,=2
CALL C8
LAD GR1,TB2
LAD GR2,TL2
LAD GR3,SB5
LD GR4,SL5
CALL C9
LAD GR1,TB2
LAD GR2,TL2
LAD GR3,TB1
LD GR4,TL1
CALL C8
LAD GR1,SB5
LAD GR2,SL5
LAD GR3,TB2
LD GR4,TL2
CALL C9
; If (Len(s) > 60) Then
LD GR7,SL5
LAD GR6,60
LAD GR0,=#FFFF
CPA GR7,GR6
JPL J44
XOR GR0,GR0
J44 LD GR7,GR0
AND GR7,GR7
JZE J43
; Print s
OUT SB5,SL5
; s = ""
LAD GR1,SB5
LAD GR2,SL5
LAD GR3,=0
LAD GR4,0
CALL C9
; End If
J43 NOP
; Next i
J41 NOP
LD GR1,I3
LAD GR1,1,GR1
ST GR1,I3
JUMP J40
J42 NOP
; If (Len(s) > 0) Then
LD GR7,SL5
LAD GR6,0
LAD GR0,=#FFFF
CPA GR7,GR6
JPL J46
XOR GR0,GR0
J46 LD GR7,GR0
AND GR7,GR7
JZE J45
; Print s
OUT SB5,SL5
; End If
J45 NOP
; End If
J28 NOP
RET
; Dim count As Integer
I2 DS 1
; Dim i As Integer
I3 DS 1
; Dim n As Integer
I4 DS 1
; Dim s As String
SL5 DS 1
SB5 DS 256
; Dim factor(20) As Integer
IA1 DS 21
T1 DS 1
TL1 DS 1
TB1 DS 256
TL2 DS 1
TB2 DS 256
LL1 DC 7
LB1 DC 'Number?'
LL2 DC 14
LB2 DC 'Invalid Number'
; FuncAbs
C0 LD GR0,GR1
JMI J25
RET
J25 XOR GR0,GR0
SUBA GR0,GR1
RET
; FuncCInt
C1 PUSH 0,GR1
PUSH 0,GR2
PUSH 0,GR3
PUSH 0,GR4
PUSH 0,GR5
ADDL GR2,GR1
XOR GR0,GR0
XOR GR4,GR4
CPL GR1,GR2
JZE J2
LD GR3,0,GR1
CPL GR3,='+'
JNZ J4
LAD GR1,1,GR1
JUMP J3
J4 CPL GR3,='-'
JNZ J3
LAD GR4,-1
LAD GR1,1,GR1
J3 CPL GR1,GR2
JZE J2
LD GR3,0,GR1
SUBL GR3,='0'
JMI J2
CPL GR3,=9
JPL J2
LD GR5,GR0
SLL GR0,3
ADDL GR0,GR5
ADDL GR0,GR5
ADDL GR0,GR3
LAD GR1,1,GR1
JUMP J3
J2 XOR GR0,GR4
SUBL GR0,GR4
POP GR5
POP GR4
POP GR3
POP GR2
POP GR1
RET
; FuncMax
C2 CPA GR1,GR2
JMI J1
LD GR0,GR1
RET
J1 LD GR0,GR2
RET
; FuncMin
C3 CPA GR1,GR2
JMI J36
LD GR0,GR2
RET
J36 LD GR0,GR1
RET
; FuncCStrArgInt
C5 CPL GR3,=#8000
JNZ J5
PUSH 0,GR3
PUSH 0,GR4
LAD GR3,='-32768'
LAD GR4,6
CALL C9
POP GR4
POP GR3
RET
J5 AND GR3,GR3
JNZ J6
LAD GR3,1
ST GR3,0,GR2
LD GR3,='0'
ST GR3,0,GR1
XOR GR3,GR3
RET
J6 PUSH 0,GR1
PUSH 0,GR2
PUSH 0,GR3
PUSH 0,GR4
PUSH 0,GR5
JPL J7
LD GR4,='-'
ST GR4,0,GR1
LAD GR1,1,GR1
XOR GR3,=#FFFF
LAD GR3,1,GR3
J7 LAD GR4,V1
LD GR5,GR1
LD GR2,GR3
LAD GR3,10
J8 CALL C10
ADDL GR1,='0'
ST GR1,0,GR4
LAD GR4,1,GR4
LD GR2,GR0
JPL J8
LAD GR2,V1
LAD GR4,-1,GR4
J9 LD GR1,0,GR4
ST GR1,0,GR5
LAD GR5,1,GR5
LAD GR4,-1,GR4
CPL GR4,GR2
JPL J9
JZE J9
LD GR0,GR5
POP GR5
POP GR4
POP GR3
POP GR2
POP GR1
SUBL GR0,GR1
ST GR0,0,GR2
RET
V1 DS 6
; UtilConcatStr
C8 PUSH 0,GR1
PUSH 0,GR2
PUSH 0,GR3
PUSH 0,GR4
LD GR0,0,GR2
LD GR2,GR1
ADDL GR1,GR0
LAD GR2,256,GR2
ADDL GR4,GR3
J26 CPL GR1,GR2
JZE J27
CPL GR3,GR4
JZE J27
LD GR0,0,GR3
ST GR0,0,GR1
LAD GR1,1,GR1
LAD GR3,1,GR3
JUMP J26
J27 LD GR0,GR1
POP GR4
POP GR3
POP GR2
POP GR1
SUBL GR0,GR1
ST GR0,0,GR2
RET
; UtilCopyStr
C9 PUSH 0,GR1
PUSH 0,GR2
PUSH 0,GR3
PUSH 0,GR4
ST GR4,0,GR2
AND GR4,GR4
JZE J11
J10 LD GR2,0,GR3
ST GR2,0,GR1
LAD GR3,1,GR3
LAD GR1,1,GR1
SUBA GR4,=1
JPL J10
J11 POP GR4
POP GR3
POP GR2
POP GR1
RET
; UtilDivMod
C10 AND GR3,GR3
JNZ J12
XOR GR0,GR0
LAD GR1,-1
RET
J12 PUSH 0,GR2
PUSH 0,GR3
PUSH 0,GR4
PUSH 0,GR5
LD GR4,GR2
LD GR1,GR2
CALL C0
LD GR5,GR0
LD GR1,GR3
CALL C0
LD GR1,GR0
LAD GR0,1
J13 ADDL GR1,GR1
JOV J14
ADDL GR0,GR0
JUMP J13
J14 SRL GR1,1
LAD GR1,#8000,GR1
XOR GR2,GR2
J15 CPL GR5,GR1
JMI J16
SUBL GR5,GR1
ADDL GR2,GR0
J16 SRL GR0,1
JZE J17
SRL GR1,1
JUMP J15
J17 LD GR5,GR4
XOR GR5,GR3
SRA GR5,15
XOR GR2,GR5
SUBA GR2,GR5
CALL C11
LD GR1,GR4
SUBA GR1,GR0
LD GR0,GR2
POP GR5
POP GR4
POP GR3
POP GR2
RET
; UtilMul
C11 PUSH 0,GR2
PUSH 0,GR3
PUSH 0,GR4
PUSH 0,GR5
XOR GR0,GR0
XOR GR1,GR1
LD GR4,GR2
LD GR5,GR3
J18 SRL GR2,1
JOV J19
JNZ J21
JUMP J22
J19 ADDL GR0,GR3
JOV J20
JUMP J21
J20 LAD GR1,1,GR1
J21 SLL GR3,1
JUMP J18
J22 SRL GR5,1
SLL GR4,1
JOV J23
JNZ J22
JUMP J24
J23 ADDL GR1,GR5
JUMP J22
J24 POP GR5
POP GR4
POP GR3
POP GR2
RET
; UtilSafeIndex
C12 PUSH 0,GR1
PUSH 0,GR2
LAD GR2,-1,GR2
CALL C3
XOR GR1,GR1
LD GR2,GR0
CALL C2
POP GR2
POP GR1
RET
END
マークダウンにHTMLを埋め込むのは邪道か?
https://gigazine.net/news/20210402-bacteria-with-sugar-act-brain/
マジか・・・砂糖こわい・・・さっさとshower time
https://en.wikipedia.org/wiki/Free_Java_implementations
https://en.wikipedia.org/wiki/List_of_Java_virtual_machines
https://en.wikipedia.org/wiki/Comparison_of_Java_virtual_machines
ふむ・・・?さっさとshower timeしないと・・・
https://en.wikipedia.org/wiki/Java_performance
https://ja.wikipedia.org/wiki/Java%E3%81%AE%E6%80%A7%E8%83%BD
なんだこのページわhttps://ja.wikipedia.org/wiki/Category:%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AE%E6%AF%94%E8%BC%83
https://en.wikipedia.org/wiki/Category:Software_comparisons
へぇ・・・ではshower time
さっさとshower time!!!!!!!!
*1:n Mod i) <> 0)
J34 NOP
LD GR7,I4
LD GR6,I3
PUSH 0,GR6
LD GR2,GR7
POP GR3
CALL C10
LD GR0,GR1
LD GR7,GR0
LAD GR6,0
SUBA GR7,GR6
LD GR6,GR7
XOR GR6,=#FFFF
LAD GR6,1,GR6
OR GR7,GR6
SRA GR7,15
AND GR7,GR7
JNZ J35
; factor( count ) = i
LD GR7,I2
LD GR1,GR7
LAD GR2,21
CALL C12
LD GR7,GR0
LD GR6,I3
ST GR6,IA1,GR7
; count += 1
LAD GR7,1
ADDA GR7,I2
ST GR7,I2
; n = (n \ i)
LD GR7,I4
LD GR6,I3
PUSH 0,GR6
LD GR2,GR7
POP GR3
CALL C10
LD GR7,GR0
ST GR7,I4
; Loop
JUMP J34
J35 NOP
; i += 1
LAD GR7,1
ADDA GR7,I3
ST GR7,I3
; Loop While ((i * i) <= n)
J32 NOP
LD GR7,I3
LD GR6,I3
PUSH 0,GR6
LD GR2,GR7
POP GR3
CALL C11
LD GR7,GR0
LD GR6,I4
XOR GR0,GR0
CPA GR7,GR6
JPL J37
LAD GR0,=#FFFF
J37 LD GR7,GR0
AND GR7,GR7
JNZ J31
J33 NOP
; If (n > 1) Then
LD GR7,I4
LAD GR6,1
LAD GR0,=#FFFF
CPA GR7,GR6
JPL J39
XOR GR0,GR0
J39 LD GR7,GR0
AND GR7,GR7
JZE J38
; factor( count ) = n
LD GR7,I2
LD GR1,GR7
LAD GR2,21
CALL C12
LD GR7,GR0
LD GR6,I4
ST GR6,IA1,GR7
; count += 1
LAD GR7,1
ADDA GR7,I2
ST GR7,I2
; End If
J38 NOP
; Print ("FACTORS: " & CStr(count