Ich habe versucht, FizzBuzz in DCPU-16 zu implementieren. Ich verwende diesen Web-Emulator: http://mappum.github.com/DCPU-16/ (Repository: https://github.com/mappum/DCPU-16).Optimieren DCPU-16 FizzBuzz
Es stoppt vor dem Ende der Schleife. Warum?
Wie kann ich es optimieren? Ich bin ein hochsprachiger Programmierer, der nichts über asm weiß. Haben Sie einige grundlegende Ressource auf diesem?
Mehr Infos auf DCPU-16: offizielle Brille: http://0x10c.com/doc/dcpu-16.txt - inoffizielle Angaben: http://0x10.cc/
Der Code:
; FizzBuzz in DCPU-16
SET Z, 0x8000
SET I, 1
:loop
JSR print
ADD I, 1
IFN I, 100
SET PC, loop
BRK
:print
ADD Z, 1
SET [Z], 10
SET A, I
MOD A, 3
IFE A, 0
JSR printFizz
SET B, I
MOD B, 5
IFE B, 0
JSR printBuzz
SET C, A
IFG B, A
SET C, B
ADD A, B
IFG A, C
JSR printNumber
SET PC, POP
:printNumber
SET A, I
IFG I, 9
DIV A, 10
JSR printDigit
IFG 10, I
SET PC, POP
SET A, I
MOD A, 10
JSR printDigit
SET PC, POP
:printDigit
ADD A, 48
ADD Z, 1
SET [Z], A
SET PC, POP
:printFizz
ADD Z, 1
SET [Z], 70
ADD Z, 1
SET [Z], 105
ADD Z, 1
SET [Z], 122
ADD Z, 1
SET [Z], 122
SET PC, POP
:printBuzz
ADD Z, 1
SET [Z], 66
ADD Z, 1
SET [Z], 117
ADD Z, 1
SET [Z], 122
ADD Z, 1
SET [Z], 122
SET PC, POP
Wenn Sie ein paar Ideen für die Optimierung eines Fizzbuzz wollen, hier ist meine C fizzbuzz so optimal wie möglich gemacht (ohne native Funktionen zu verwenden): http://pastie.org/3739291. Die verwendete Haupttechnik ist das Loop-Abrollverfahren. – Matt
Was bedeutet "optimieren" im Zusammenhang mit DCPU16? Weniger Anweisungen? – lunixbochs
@lunixbochs, weniger Zyklen. Zyklen sind bereits gut dokumentiert. – Matt