Executable memory

Adam D. Ruppe destructionator at gmail.com
Fri Oct 4 14:10:29 PDT 2013


On Friday, 4 October 2013 at 20:50:09 UTC, Alan wrote:
> Does anyone have an example of how to maybe print a character 
> to the string with a  system call?

yeah on Linux the assembly is:

   string a = "hello!";
   auto sptr = a.ptr;
   auto slen = a.length;
   version(D_InlineAsm_X86)
   asm { // 32 bit
        mov ECX, sptr;
        mov EDX, slen;
        mov EBX, fd;
        mov EAX, 4; // sys_write
        int 0x80;
    }
    else version(D_InlineAsm_X86_64)
    asm { // 64 bit
       mov RSI, sptr;
       mov RDX, slen;
       mov RDI, fd;
       mov RAX, 1; // sys_write
       syscall;
    }

I gotta run, so I'll leave translating that into machine code an 
exercise for the reader (you could compile it in D then objdump 
it), at least until I get back to the computer :)


More information about the Digitalmars-d-learn mailing list