mov r1, x mov r2, x -- not needed if you can stomp it and r2, BYTE ~7 and r1, 7 cmp r1, %tag cmove r2, class_%tag_addr ; *(void*)(class_6_addr) == %tag << 3 mov r3, [r2]