5 // separate assembly instructions by ; or \n
6 immutable string CODE
= "INC ecx; DEC edx";
15 err
= ks_open(KS_ARCH_X86
, KS_MODE_32
, &ks
);
16 if (err
!= KS_ERR_OK
) assert(0, "FATAL: can't init keystone");
18 if (ks_asm(ks
, CODE
.ptr
, 0, &encode
, &size
, &count
) != KS_ERR_OK
) {
19 import std
.string
: fromStringz
;
20 writefln("ERROR: ks_asm() failed & count = %s, error = %s (%s)", count
, ks_errno(ks
), ks_strerror(ks_errno(ks
)).fromStringz
);
22 writefln("%s = ", CODE
);
23 foreach (immutable i
; 0..size
) writef("%02x ", encode
[i
]);
25 writefln("Compiled: %s bytes, statements: %s", size
, count
);
28 // NOTE: free encode after usage to avoid leaking memory
31 // close Keystone instance when done