On Fri, Dec 08, 2017 at 12:15:37AM +0900, Masatake YAMATO wrote: [...] > I read this through. Other than assembly language code in code(), > it looks good for me. > > I don't understand what is done in code(). > I compiled .c file having only code() and run objdump -d: > What I got is > > 0000000000000000 <code>: > 0: 55 push %rbp > 1: 48 89 e5 mov %rsp,%rbp > 4: ba f8 03 00 d8 mov $0xd80003f8,%edx > 9: b0 0a mov $0xa,%al > b: ee out %al,(%dx) > c: f4 hlt > d: 90 nop > e: 5d pop %rbp > f: c3 retq
It looks slightly different in the real test, most likely because gcc optimized it: $ objdump -d ioctl_kvm_run.o | sed -n '/<code>/,/^$/p' 0000000000000000 <code>: 0: ba f8 03 00 d8 mov $0xd80003f8,%edx 5: b0 0a mov $0xa,%al 7: ee out %al,(%dx) 8: f4 hlt 9: c3 retq a: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1) Anyway, the difference is not important as long as "out" and "hlt" are there. > I find no add operator in the output. So I guess what this > code does is different fron what the original code does: > > const uint8_t code[] = { > 0xba, 0xf8, 0x03, /* mov $0x3f8, %dx */ > 0x00, 0xd8, /* add %bl, %al */ > 0x04, '0', /* add $'0', %al */ > > The code executed by kvm is not important here. However, > I wondher what the intent is. I've just simplified the code a bit. -- ldv
signature.asc
Description: PGP signature
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel