Advertisement
Guest User

Untitled

a guest
Mar 13th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.40 KB | None | 0 0
  1. using System;
  2.  
  3. namespace func.brainfuck
  4. {
  5.     public class BrainfuckBasicCommands
  6.     {
  7.         public static void RegisterTo(IVirtualMachine vm, Func<int> read, Action<char> write)
  8.         {
  9.             var characters = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890";
  10.  
  11.             vm.RegisterCommand('.', b => { write((char)b.Memory[b.MemoryPointer]); });
  12.             vm.RegisterCommand('+', b =>
  13.             {
  14.                 b.Memory[b.MemoryPointer] = (byte)((b.Memory[b.MemoryPointer] + 1) % 256);
  15.                 //b.Memory[b.MemoryPointer] = (byte)(b.Memory[b.MemoryPointer] << 31 + 1);
  16.             });
  17.             vm.RegisterCommand('-', b =>
  18.             {
  19.                 b.Memory[b.MemoryPointer] = (byte)((b.Memory[b.MemoryPointer] + 255) % 256);
  20.             });
  21.             vm.RegisterCommand(',', b =>
  22.             {
  23.                 b.Memory[b.MemoryPointer] = (byte)read();
  24.             });
  25.             vm.RegisterCommand('>', b =>
  26.             {
  27.                 b.MemoryPointer = (b.MemoryPointer + 1) % b.Memory.Length;
  28.             });
  29.             vm.RegisterCommand('<', b =>
  30.             {
  31.                 b.MemoryPointer =  (b.MemoryPointer + b.Memory.Length - 1) % b.Memory.Length;
  32.             });
  33.  
  34.             foreach (var item in characters)
  35.             {
  36.                 vm.RegisterCommand(item, b => { b.Memory[b.MemoryPointer] = (byte)item; });
  37.             }
  38.         }
  39.     }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement