Я наткнулся на эту функцию и хотел знать, что она делает, поэтому я написал следующее, скомпилированное с помощью mingw32 и выполненное в Wine и Windows, на обоих из которых произошел сбой программы.
#include <stdio.h>
#include <stdlib.h>
#include <intrin.h>
int main()
{
unsigned char j = __inbyte(0xABC); // example value
printf("%i\n", j);
return 0;
}
Я посмотрел это на MSDN, но нахожу описание неясным.
http://msdn.microsoft.com/en-us/library/732t2y37%28v=vs.100%29.aspx
неподписанный символ __inbyte (неподписанный короткий порт);
Создает в инструкция, возвращающая один байт, прочитанный из порта, указанного в Port.
Инструкция IN пытается напрямую прочитать байт из порта ввода-вывода ЦП. Это привилегированная операция, которая (почти) всегда завершится ошибкой, если вы не находитесь в режиме супервизора (например, в ядре).
Если вы не планируете писать драйверы для ядра, вы можете с уверенностью забыть, что когда-либо видели это встроенное.
Других решений пока нет …