Il 07/05/2014 06:36, Bandan Das ha scritto:
> + _x = *(_type __aligned(1) *) &_fc->data[ctxt->_eip - _fc->start]; \
For my own understanding, how does the __aligned help here ?
Except for 16-byte SSE accesses, x86 doesn't distinguish aligned and
unaligned accesses. You can read 4 bytes at 0x2345 and the processor
will do the right thing. Still it's better to tell the compiler what
we're doing.
Wouldn't
that result in unaligned accesses that will actually impact performance ?
These accesses *can* and will in fact be unaligned. For example, say
you have "mov ax,0x1234" which is 0xb8 0x34 0x12. When you read it into
the fetch cache, you will have data[0] == 0xb8, data[1] == 0x34, data[2]
== 0x12. Fetching the 16-bit immediate from data[1] will then be an
unaligned access.
Paolo
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html