Почему __inbyte приводит к сбою моего программного обеспечения?

Я наткнулся на эту функцию и хотел знать, что она делает, поэтому я написал следующее, скомпилированное с помощью 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.

3

Решение

Инструкция IN пытается напрямую прочитать байт из порта ввода-вывода ЦП. Это привилегированная операция, которая (почти) всегда завершится ошибкой, если вы не находитесь в режиме супервизора (например, в ядре).

Если вы не планируете писать драйверы для ядра, вы можете с уверенностью забыть, что когда-либо видели это встроенное.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]