原始内存访问Java / Python

时间:2013-03-11 20:29:15

标签: java pointers reference

  

内存映射硬件

     

在某些计算体系结构中,指针可以直接使用   操纵内存或内存映射设备。

     

在编程时,为指针分配地址是一个非常宝贵的工具   微控制器。下面是一个声明指针的简单示例   在此示例中键入int并将其初始化为十六进制地址   常量0x7FFF:

     

int * hardware_address =(int *)0x7FFF;

     

在80年代中期,使用BIOS访问PC的视频功能   很慢。通常用于显示密集型应用程序   通过转换十六进制常量直接访问CGA视频内存   0xB8000指向80个无符号16位int值的数组的指针。   每个值由低字节的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);

2 个答案:

答案 0 :(得分:3)

我完全不确定上下文,因此对你正在尝试做的事情有用,但是这里有:

Java Native Interface应允许在进程空间内直接访问内存。同样,python can load c module将提供访问方法。

但是,除非系统已加载驱动程序以进行接口连接,否则任何硬件设备内存都将超出范围。即使这样,驱动程序/内核模块也必须是解决非应用程序空间内存的模块。

答案 1 :(得分:1)

如果您使用的是/dev/mem操作系统,则可以在其上创建MappedByteBuffer并执行此类操作。