2013-03-11 14 views
1

內存映射硬件原始存儲器存取的Java/Python的

在某些計算架構,指針可以用來直接 操縱存儲器或存儲器映射的設備。

分配地址的指針編程 微控制器時,是一個寶貴的工具。下面是一個簡單的例子聲明 int類型的指針並且在該示例 它初始化爲十六進制地址的常數0x7FFF的:

INT * hardware_address =(INT *)0x7FFF的;

在80年代中期,使用BIOS來訪問電腦 的視頻功能是緩慢的。那是顯示密集型應用通常直接由鑄造十六進制常數 0xB8000的指針80的無符號16位int值的陣列用於 訪問CGA視頻存儲器。 每個值由低位字節中的ASCII代碼和高位字節中的顏色組成。因此,把字母「A」在藍色 亮白色的第5行,第2列,一個會寫如下代碼:

#define VID ((unsigned short (*)[80])0xB8000) 

void foo() { 
    VID[4][1] = 0x1F00 | 'A'; 
} 

是可能的Java/Python中這樣的事情在沒有指針?

編輯:

是這樣一種存取權限可能:

char* m_ptr=(char*)0x603920; 
printf("\nm_ptr: %c",*m_ptr); 

+0

你能解釋一下你想要做什麼嗎? – 2013-03-11 20:41:36

+0

只是閱讀[這](http://en.wikipedia.org/wiki/Pointer_%28computer_programming%29) – 4pie0 2013-03-11 20:47:18

回答

3

我完全不明朗的背景下和你想要做什麼。因此有用的應用,但在這裏有雲:

Java Native Interface應該允許進程空間內的直接內存訪問。同樣,python can load c module將提供一種訪問方法。

除非你有被系統做接口加載的驅動程序,然而,任何硬件設備內存會出界外。即使如此,驅動程序/內核模塊也必須是解決非應用程序空間內存的模塊。

+0

請參閱編輯 – 4pie0 2013-03-11 21:06:33

1

如果你是一個操作系統/dev/mem上,你可以創建一個MappedByteBuffer到它,做這樣的事情。

+0

感謝,你可以請給一些更多的細節/鏈接? – 4pie0 2013-03-11 21:23:20

+0

MappedByteBuffer上的標準Java文檔,結合'man mem'或'man proc'(for/proc/PID/mem)的結果會告訴你你想要什麼。 – bmargulies 2013-03-11 21:28:13

+0

謝謝@bmargulies – 4pie0 2013-03-11 21:35:16

相關問題