内存映射硬件
在某些计算体系结构中,指针可以直接使用 操纵内存或内存映射设备。
在编程时,为指针分配地址是一个非常宝贵的工具 微控制器。下面是一个声明指针的简单示例 在此示例中键入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);
答案 0 :(得分:3)
我完全不确定上下文,因此对你正在尝试做的事情有用,但是这里有:
Java Native Interface应允许在进程空间内直接访问内存。同样,python can load c module将提供访问方法。
但是,除非系统已加载驱动程序以进行接口连接,否则任何硬件设备内存都将超出范围。即使这样,驱动程序/内核模块也必须是解决非应用程序空间内存的模块。
答案 1 :(得分:1)
如果您使用的是/dev/mem
操作系统,则可以在其上创建MappedByteBuffer
并执行此类操作。