Paradoxně v asm těch chyb člověk moc neudělá. Prostor pro chyby je minimální - sebemenší překlep nebo použití jiného registru/instrukce vyprodukuje přinejhorším špatný výsledek (SIMD) nebo crash (scalar kód). Odhalí to i úplně minimální testovací korpus. Takže základ je mít testy, nejlépe hodně hodně testů...
Já nedávno dělal na projektu, kde bylo asi 20k řádků AVX-512 kódu přímo v asm. Jeden z důvodů bylo použití speciální calling convention pro subrutiny, které ten AVX-512 kód volal (parametry v ZMM registrech, atd...) , což nebylo možné udělat v C++. A výsledek? Většina chyb byla v high-level kódu kolem toho. Pak se přešlo na JIT kompilaci pro některé části, a to bylo zase o něco zajímavější :)