string ReadString(int pi, CInterpreter state)
            {
                var b     = (byte)state.ReadMemory(pi);
                var bytes = new List <byte> ();

                while (b != 0)
                {
                    bytes.Add(b);
                    pi++;
                    b = (byte)state.ReadMemory(pi);
                }
                return(Encoding.UTF8.GetString(bytes.ToArray()));
            }