Я натолкнулся на эту функцию, и я хотел знать, что она делает, поэтому я написал следующее, скомпилированное с помощью mingw32 и выполненное под Wine и Windows, на обоих из которых программа разбилась.Почему __inbyte разбивает мое программное обеспечение?
#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 (неподписанный короткий порт);
Производит команду в инструкции, возвращая один байт, считанный из порта, указанного портом.
И даже если вы пишете драйвер, обычно существуют подпрограммы ОС для выполнения такого рода операций независимо от архитектуры. –
Справа - за пределами нескольких платформных устройств, у которых уже есть драйверы, большинство устройств, с которыми вы, вероятно, будете писать драйвер, получают доступ через PCI/PCIe/USB, а не прямые порты ввода-вывода. – duskwuff