Artifact f617e407166befd836dc6d0051a0609a7fbb5fa8:
File langs/bf.rx part of check-in [d844f9fff0] - add assembler, brainf*** compiler by charleschilders on 2011-05-31 03:24:50. [annotate]
0000: 28 20 53 75 70 70 6f 72 74 20 66 75 6e 63 74 69 ( Support functi 0010: 6f 6e 73 3a 20 62 61 73 69 63 20 69 6e 70 75 74 ons: basic input 0020: 2c 20 6f 75 74 70 75 74 2c 20 61 6e 64 20 64 61 , output, and da 0030: 74 61 20 70 6f 69 6e 74 65 72 20 73 75 70 70 6f ta pointer suppo 0040: 72 74 20 29 0a 3a 77 61 69 74 0a 20 20 23 30 20 rt ).:wait. #0 0050: 23 30 20 6f 75 74 2c 0a 20 20 77 61 69 74 2c 0a #0 out,. wait,. 0060: 20 20 72 65 74 2c 0a 0a 3a 62 79 65 0a 20 20 23 ret,..:bye. # 0070: 2d 39 20 23 35 20 6f 75 74 2c 0a 20 20 72 65 74 -9 #5 out,. ret 0080: 2c 0a 0a 3a 64 70 20 33 32 37 36 38 20 6d 2c 0a ,..:dp 32768 m,. 0090: 0a 3a 62 66 5f 3e 0a 20 20 64 70 20 23 20 40 2c .:bf_>. dp # @, 00a0: 0a 20 20 31 2b 2c 0a 20 20 64 70 20 23 20 21 2c . 1+,. dp # !, 00b0: 0a 20 20 72 65 74 2c 0a 0a 3a 62 66 5f 3c 0a 20 . ret,..:bf_<. 00c0: 20 64 70 20 23 20 40 2c 0a 20 20 31 2d 2c 0a 20 dp # @,. 1-,. 00d0: 20 64 70 20 23 20 21 2c 0a 20 20 72 65 74 2c 0a dp # !,. ret,. 00e0: 0a 3a 62 66 5f 2b 0a 20 20 64 70 20 23 20 40 2c .:bf_+. dp # @, 00f0: 20 40 2c 0a 20 20 31 2b 2c 0a 20 20 64 70 20 23 @,. 1+,. dp # 0100: 20 40 2c 20 21 2c 0a 20 20 72 65 74 2c 0a 0a 3a @, !,. ret,..: 0110: 62 66 5f 2d 0a 20 20 64 70 20 23 20 40 2c 20 40 bf_-. dp # @, @ 0120: 2c 0a 20 20 31 2d 2c 0a 20 20 64 70 20 23 20 40 ,. 1-,. dp # @ 0130: 2c 20 21 2c 0a 20 20 72 65 74 2c 0a 0a 3a 62 66 , !,. ret,..:bf 0140: 5f 2e 0a 20 20 64 70 20 23 20 40 2c 20 40 2c 0a _.. dp # @, @,. 0150: 20 20 23 31 20 23 32 20 6f 75 74 2c 0a 20 20 63 #1 #2 out,. c 0160: 61 6c 6c 20 77 61 69 74 0a 20 20 23 30 20 23 33 all wait. #0 #3 0170: 20 6f 75 74 2c 0a 20 20 72 65 74 2c 0a 0a 3a 62 out,. ret,..:b 0180: 66 5f 2c 0a 20 20 23 31 20 23 31 20 6f 75 74 2c f_,. #1 #1 out, 0190: 0a 20 20 63 61 6c 6c 20 77 61 69 74 0a 20 20 23 . call wait. # 01a0: 31 20 69 6e 2c 0a 20 20 72 65 74 2c 0a 0a 28 20 1 in,. ret,..( 01b0: 41 63 74 75 61 6c 20 42 72 61 69 6e 46 2a 2a 2a Actual BrainF*** 01c0: 20 63 6f 6d 70 69 6c 65 72 20 29 0a 76 61 72 69 compiler ).vari 01d0: 61 62 6c 65 20 69 70 0a 76 61 72 69 61 62 6c 65 able ip.variable 01e0: 20 6c 70 0a 0a 3a 20 67 65 74 4c 61 62 65 6c 0a lp..: getLabel. 01f0: 20 20 40 6c 70 20 74 6f 53 74 72 69 6e 67 20 22 @lp toString " 0200: 4c 22 20 5e 73 74 72 69 6e 67 73 27 70 72 65 70 L" ^strings'prep 0210: 65 6e 64 20 3b 0a 0a 3a 20 72 75 6e 0a 20 20 74 end ;..: run. t 0220: 2d 68 65 72 65 20 70 75 74 6e 20 73 70 61 63 65 -here putn space 0230: 20 40 69 70 20 40 20 70 75 74 63 20 63 72 0a 20 @ip @ putc cr. 0240: 20 40 69 70 20 40 20 69 70 20 2b 2b 0a 20 20 5b @ip @ ip ++. [ 0250: 20 27 3e 20 3d 20 5d 20 5b 20 64 72 6f 70 20 62 '> = ] [ drop b 0260: 66 5f 3e 20 6d 2c 20 5d 20 77 68 65 6e 0a 20 20 f_> m, ] when. 0270: 5b 20 27 3c 20 3d 20 5d 20 5b 20 64 72 6f 70 20 [ '< = ] [ drop 0280: 62 66 5f 3c 20 6d 2c 20 5d 20 77 68 65 6e 0a 20 bf_< m, ] when. 0290: 20 5b 20 27 2b 20 3d 20 5d 20 5b 20 64 72 6f 70 [ '+ = ] [ drop 02a0: 20 62 66 5f 2b 20 6d 2c 20 5d 20 77 68 65 6e 0a bf_+ m, ] when. 02b0: 20 20 5b 20 27 2d 20 3d 20 5d 20 5b 20 64 72 6f [ '- = ] [ dro 02c0: 70 20 62 66 5f 2d 20 6d 2c 20 5d 20 77 68 65 6e p bf_- m, ] when 02d0: 0a 20 20 5b 20 27 2e 20 3d 20 5d 20 5b 20 64 72 . [ '. = ] [ dr 02e0: 6f 70 20 62 66 5f 2e 20 6d 2c 20 5d 20 77 68 65 op bf_. m, ] whe 02f0: 6e 0a 20 20 5b 20 27 2c 20 3d 20 5d 20 5b 20 64 n. [ ', = ] [ d 0300: 72 6f 70 20 62 66 5f 2c 20 6d 2c 20 5d 20 77 68 rop bf_, m, ] wh 0310: 65 6e 0a 20 20 5b 20 27 5b 20 3d 20 5d 20 5b 20 en. [ '[ = ] [ 0320: 64 72 6f 70 20 67 65 74 4c 61 62 65 6c 20 68 65 drop getLabel he 0330: 61 64 65 72 20 74 2d 68 65 72 65 20 40 6c 61 73 ader t-here @las 0340: 74 20 21 64 2d 3e 78 74 20 6c 70 20 2b 2b 20 5d t !d->xt lp ++ ] 0350: 20 77 68 65 6e 0a 20 20 5b 20 27 5d 20 3d 20 5d when. [ '] = ] 0360: 20 5b 20 64 72 6f 70 20 64 70 20 23 20 40 2c 20 [ drop dp # @, 0370: 40 2c 20 6c 69 74 2c 20 30 20 6d 2c 20 21 6a 75 @, lit, 0 m, !ju 0380: 6d 70 2c 20 6c 70 20 2d 2d 20 67 65 74 4c 61 62 mp, lp -- getLab 0390: 65 6c 20 66 69 6e 64 20 64 72 6f 70 20 40 64 2d el find drop @d- 03a0: 3e 78 74 20 6d 2c 20 5d 20 77 68 65 6e 0a 20 20 >xt m, ] when. 03b0: 64 72 6f 70 20 3b 0a 0a 3a 20 64 6f 0a 20 20 5b drop ;..: do. [ 03c0: 20 72 75 6e 20 40 69 70 20 40 20 5d 20 77 68 69 run @ip @ ] whi 03d0: 6c 65 20 3b 0a 0a 3a 20 62 66 3a 20 28 20 22 2d le ;..: bf: ( "- 03e0: 20 29 0a 20 20 27 7e 20 61 63 63 65 70 74 20 74 ). '~ accept t 03f0: 69 62 20 6b 65 65 70 53 74 72 69 6e 67 20 21 69 ib keepString !i 0400: 70 20 64 6f 20 3b 0a 0a 28 20 53 74 61 72 74 20 p do ;..( Start 0410: 43 6f 6d 70 69 6c 61 74 69 6f 6e 20 6f 66 20 42 Compilation of B 0420: 72 61 69 6e 46 2a 2a 2a 20 63 6f 64 65 20 61 66 rainF*** code af 0430: 74 65 72 20 74 68 69 73 20 29 0a 3a 6d 61 69 6e ter this ).:main 0440: 0a .