public static uint Compile(this Cpu cpu, ProcessContextBlock pcb, string source)
        {
            var ms = new MemoryStream();

            using (var writer = new CodeWriter(ms))
            {
                var assembler = new Assembler(source);
                foreach (var i in assembler.Assemble())
                {
                    writer.Write(i);
                }

                writer.Close();

                var codeBlock = cpu.AllocateCodeBlock(pcb, (uint)ms.Length);
                ms.WriteTo(codeBlock);

                return((uint )ms.Length);
            }
        }