Я не знаю, что все три предоставляют информацию одинаково, но если вы можете с уверенностью предположить, что ядро NT будет сообщать информацию об устройстве в соответствии со стандартом POSIX (который NT предположительно поддерживает), то вы могли бы работать от этого стандарта.
Однако различия в управлении устройствами часто упоминаются как один из камней преткновения для кроссплатформенной разработки. В лучшем случае я бы реализовал это как три нити логики, я бы не стал писать один кусок кода для равномерной обработки всех платформ.
Хорошо, все, что предполагает C ++. Я полагаю, что для ASM вы будете работать только на процессорах x86 или amd64? Вам все равно понадобятся два пути ветвления, по одному для каждой архитектуры, и вам нужно будет тестировать Intel отдельно от AMD (IIRC), но в целом вы просто проверяете CPUID. Это то, что вы пытаетесь найти? CPUID от ASM на процессорах семейства Intel / AMD?