для возможности, например, тестово запустить прогу на виртуальной Cisc'е, когда гость — обычная x86-ая машина
Простите, что вы имели в виду?
То, что с Qemu можно исполнить код специфичный для процессора, который физически отсутствует на хостовой машине.
Я всегда считал, что KQEMU — быстрая эмуляция(проприетарная технология)
На сайте проекта QEMU до сих указано именно «обеспечение возможности запуска», а не ускорение работы эмулятора
для возможности, например, тестово запустить прогу на виртуальной Cisc'е, когда гость — обычная x86-ая машина
не для того QEMU интегрировали в KVM чтобы летало
Реализацию шаблонных методов / функций нельзя выносить в отдельный translation unit
template <typename T>
class Q
{
T t;
void f(T);
};
#include "q.h"
template <typename T> void Q<T>::f(T v)
{
t += v;
}
template class Q<int>;
$ g++ q.cpp -g -c -o q.o
$ objdump --demangle -d q.o
q.o: file format elf64-x86-64
Disassembly of section .text._ZN1QIiE1fEi:
0000000000000000 <Q<int>::f(int)>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 48 89 7d f8 mov %rdi,-0x8(%rbp)
8: 89 75 f4 mov %esi,-0xc(%rbp)
b: 48 8b 45 f8 mov -0x8(%rbp),%rax
f: 8b 00 mov (%rax),%eax
11: 89 c2 mov %eax,%edx
13: 03 55 f4 add -0xc(%rbp),%edx
16: 48 8b 45 f8 mov -0x8(%rbp),%rax
1a: 89 10 mov %edx,(%rax)
1c: 5d pop %rbp
1d: c3 retq
Это место вовсе не очевидно. Например умножение 110011 (есть нули) на 101 (есть нули) даёт 11111111 (нет нулей).