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 [email protected] https://lists.sourceforge.net/lists/listinfo/strace-devel
