Как могут аппаратные порты Java Write/Read, как это делает C? (outb, inb и т. д.)

У меня есть приложение на C Это приложение пишет и читает некоторые адреса портов ввода / вывода.

Я думаю, что Java не может получить доступ к низкоуровневому адресу ввода-вывода. Я прав?

Вот пример приложения C++:

#include <malloc.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <sys/io.h>

int main(int argc, char *argv[])
{
    cout << "Refresh watchdog program" << endl;

    outb(0x87,0x2E);     //Extended Function Mode
    outb(0x30,0x2E);     //Set Watch Dog Timer Activate
    outb(0x01,0x2F);
    int reg = inb(0x2f);
    outb(reg|0x08, 0x2f);

}

Как я могу сделать то же самое в Java?

1 ответ

Я думаю, что sun.misc.Unsafe может помочь вам в этом. У него есть такие методы, как void putAddress(long address, long value) это может удовлетворить ваши потребности. Если честно, я не работал над этим, но вы можете узнать об этом больше из

http://mydailyjava.blogspot.co.uk/2013/12/sunmiscunsafe.html

http://mishadoff.github.io/blog/java-magic-part-4-sun-dot-misc-dot-unsafe/

http://highlyscalable.wordpress.com/2012/02/02/direct-memory-access-in-java/

Небольшой образец программы можно найти на

http://robaustin.wikidot.com/how-to-write-to-direct-memory-locations-in-java

Другие вопросы по тегам