Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace func.brainfuck
- {
- public class BrainfuckBasicCommands
- {
- public static void RegisterTo(IVirtualMachine vm, Func<int> read, Action<char> write)
- {
- var characters = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890";
- vm.RegisterCommand('.', b => { write((char)b.Memory[b.MemoryPointer]); });
- vm.RegisterCommand('+', b =>
- {
- b.Memory[b.MemoryPointer] = (byte)((b.Memory[b.MemoryPointer] + 1) % 256);
- //b.Memory[b.MemoryPointer] = (byte)(b.Memory[b.MemoryPointer] << 31 + 1);
- });
- vm.RegisterCommand('-', b =>
- {
- b.Memory[b.MemoryPointer] = (byte)((b.Memory[b.MemoryPointer] + 255) % 256);
- });
- vm.RegisterCommand(',', b =>
- {
- b.Memory[b.MemoryPointer] = (byte)read();
- });
- vm.RegisterCommand('>', b =>
- {
- b.MemoryPointer = (b.MemoryPointer + 1) % b.Memory.Length;
- });
- vm.RegisterCommand('<', b =>
- {
- b.MemoryPointer = (b.MemoryPointer + b.Memory.Length - 1) % b.Memory.Length;
- });
- foreach (var item in characters)
- {
- vm.RegisterCommand(item, b => { b.Memory[b.MemoryPointer] = (byte)item; });
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement