Ну обычно мне примерно понятно почему отстает. А сейчас вообще нет идей что за магия может быть в оптимизаторах C и Go, которая позволяет им в данном случае быть как минимум в 2 раза быстрее. Ну и кроме того мы наверно можем руками подобные оптимизации сделать, нет?

Кстати я только что смог сократить до 3 сек. заменив это:

## Код:
```
|Get: reg[b2] := mem[b4];
|Set: mem[b4] := reg[b2];
```


на это:
## Код:
```
|Get: reg[b2].type := mem[b4].type; reg[b2].data.r := mem[b4].data.r;
|Set: mem[b4].type := reg[b2].type; mem[b4].data.r := reg[b2].data.r;
```


Что-то не врубаюсь почему это быстрее.

ps Люди, а как размещать untagged? Я не могу с union безопасные указатели использовать?