Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
72
Task/Execute-Brain-/Peri/execute-brain--1.peri
Normal file
72
Task/Execute-Brain-/Peri/execute-brain--1.peri
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
###sysinclude standard.uh
|
||||
###sysinclude args.uh
|
||||
###sysinclude str.uh
|
||||
###sysinclude io.uh
|
||||
|
||||
#g argc 3 < { ."Usage: peri brainfuck02.upu brainfuckfile\n" }{
|
||||
2 argv getfile
|
||||
sto bfpgm
|
||||
tick sto startingtick
|
||||
@bfpgm '< >><<
|
||||
@bfpgm '> >><<
|
||||
@bfpgm '+ >><<
|
||||
@bfpgm '- >><<
|
||||
100000 mem dup maximize sto bfmem // Memóriaallokáció a brainfuck memóriaterület számára
|
||||
sbr §brainfuck
|
||||
NL
|
||||
tick @startingtick #g - ."Time = " print ." tick\n"
|
||||
@bfmem inv mem // A lefoglalt munkamemória felszabadítása
|
||||
}
|
||||
end
|
||||
// ===================================================
|
||||
brainfuck:
|
||||
#g bfpgm~ inv { rts } // Ha nulla a brainfuck progi hossza, semmit se kell csinálni.
|
||||
zero pp zero mm // Indexregiszterek lenullázása (inicializálás)
|
||||
mainloop:
|
||||
@pp bfpgm~ >= { rts }
|
||||
@bfpgm @pp [] // Az épp aktuális brainfuck utasítás kódja
|
||||
$ffffffff &
|
||||
goto §jumpingtable[] // Ugrás a megfelelő brainfuck funkció rutinjára
|
||||
|
||||
____: ++() pp goto §mainloop
|
||||
_3c_: @mm inv { rts } @bfpgm @pp [] 32 >> inv sum mm goto §____ // <
|
||||
_3e_: @mm bfmem~ >= { rts } @bfpgm @pp [] 32 >> sum mm goto §____ // >
|
||||
_2b_: @bfmem @mm [] @bfpgm @pp [] 32 >> #c + goto §minusba // +
|
||||
_2d_: @bfmem @mm [] @bfpgm @pp [] 32 >> #c - minusba: @bfmem @mm inv rot inv [] #g goto §____ // -
|
||||
_2c_: @bfmem @mm getchar inv [] goto §____
|
||||
_2e_: @bfmem @mm [] printchar goto §____
|
||||
_5b_: @bfmem @mm [] then §____
|
||||
zero dd @pp ++ bfpgm~ {{ ,
|
||||
@bfpgm {{}} [] '[ == { ++() dd {{<}} }
|
||||
@bfpgm {{}} [] '] == { @dd inv { {{+}} sto pp {{>}} } --() dd }
|
||||
}} goto §mainloop
|
||||
|
||||
_5d_: zero dd 1 @pp {{ , @bfpgm {{-}} [] '] == { ++() dd {{<}} }
|
||||
@bfpgm {{-}} [] '[ == { @dd inv { {{}} inv sum pp {{>}} } --() dd }
|
||||
}} goto §mainloop
|
||||
// ===================================================
|
||||
{ „startingtick” }
|
||||
{ „bfpgm” }
|
||||
{ „bfmem” }
|
||||
{ „pp” /* index az épp végrehajtandó brainfuck mnemonikra */ }
|
||||
{ „mm” /* index a brainfuck memóriaterületre */ }
|
||||
{ „dd” /* munkaváltozó */ }
|
||||
// ========================================
|
||||
jumpingtable:
|
||||
// 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
|
||||
/* 00 */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____
|
||||
/* 01 */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____
|
||||
/* 02 */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §_2b_ §_2c_ §_2d_ §_2e_ §____
|
||||
/* 03 */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §_3c_ §____ §_3e_ §____
|
||||
/* 04 */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____
|
||||
/* 05 */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §_5b_ §____ §_5d_ §____ §____
|
||||
/* 06 */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____
|
||||
/* 07 */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____
|
||||
/* 08 */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____
|
||||
/* 09 */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____
|
||||
/* 0a */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____
|
||||
/* 0b */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____
|
||||
/* 0c */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____
|
||||
/* 0d */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____
|
||||
/* 0e */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____
|
||||
/* 0f */ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____ §____
|
||||
62
Task/Execute-Brain-/Peri/execute-brain--2.peri
Normal file
62
Task/Execute-Brain-/Peri/execute-brain--2.peri
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
###sysinclude standard.uh
|
||||
###sysinclude args.uh
|
||||
###sysinclude str.uh
|
||||
###sysinclude io.uh
|
||||
|
||||
#g argc 3 < { ."Usage: peri brainfuck02.upu brainfuckfile\n" }{
|
||||
2 argv getfile
|
||||
sto bfpgm
|
||||
tick sto startingtick
|
||||
@bfpgm '< >><<
|
||||
@bfpgm '> >><<
|
||||
@bfpgm '+ >><<
|
||||
@bfpgm '- >><<
|
||||
100000 mem dup maximize sto bfmem // Memóriaallokáció a brainfuck memóriaterület számára
|
||||
sbr §brainfuck
|
||||
NL
|
||||
tick @startingtick #g - ."Time = " print ." tick\n"
|
||||
@bfmem inv mem // A lefoglalt munkamemória felszabadítása
|
||||
}
|
||||
end
|
||||
// ===================================================
|
||||
brainfuck:
|
||||
#g bfpgm~ inv { rts } // Ha nulla a brainfuck progi hossza, semmit se kell csinálni.
|
||||
zero pp zero mm // Indexregiszterek lenullázása (inicializálás)
|
||||
|
||||
switchlabel:
|
||||
switch "<>+-,.[]" §_3c_ §_3e_ §_2b_ §_2d_ §_2c_ §_2e_ §_5b_ §_5d_
|
||||
mainloop:
|
||||
safe case#c bfpgm[pp] §rtslabel // Ugrás a megfelelő brainfuck funkció rutinjára
|
||||
____: ++() pp goto §mainloop
|
||||
_3c_: safe bfpgm[pp] §rtslabel hilo inv sum mm goto §____ // <
|
||||
_3e_: safe bfpgm[pp] §rtslabel hilo sum mm goto §____ // >
|
||||
_2b_: bfpgm[pp] hilo safe sum#c bfmem[mm] §safelabel goto §____ // +
|
||||
_2d_: bfpgm[pp] hilo safe inv sum#c bfmem[mm] §safelabel goto §____ // -
|
||||
_2c_: getchar safe inv bfmem[mm] §rtslabel goto §____
|
||||
_2e_: safe bfmem[mm] §rtslabel printchar goto §____
|
||||
_5b_: safe bfmem[mm] §rtslabel then §____
|
||||
switch "[]" §lbl5b0 §lbl5b1
|
||||
zero dd @pp ++ bfpgm {~ ,
|
||||
{~?~} case
|
||||
{~<~}
|
||||
lbl5b0: ++() dd {~<~}
|
||||
lbl5b1: @dd inv { {~+~} sto pp goto §switchlabel } --() dd
|
||||
~} goto §switchlabel
|
||||
|
||||
_5d_: switch "[]" §lbl5d0 §lbl5d1
|
||||
zero dd 1 @pp {{ ,
|
||||
bfpgm[{{-}}] case
|
||||
{{<}}
|
||||
lbl5d1: ++() dd {{<}}
|
||||
lbl5d0: @dd inv { {{}} inv sum pp goto §switchlabel } --() dd
|
||||
}} goto §switchlabel
|
||||
rtslabel: rts
|
||||
safelabel: ."Wrong program!" end
|
||||
// ===================================================
|
||||
{ „startingtick” }
|
||||
{ „bfpgm” }
|
||||
{ „bfmem” }
|
||||
{ „pp” /* index az épp végrehajtandó brainfuck mnemonikra */ }
|
||||
{ „mm” /* index a brainfuck memóriaterületre */ }
|
||||
{ „dd” /* munkaváltozó */ }
|
||||
// ===================================================
|
||||
Loading…
Add table
Add a link
Reference in a new issue