[ATTEMPT] asm() supports read/write operands

This also fixes output-temporary handling - dereference when storing
at the end, as it's an lvalue.
popcnt.c example
cpuid examples
Examples from usr/include