在linux下的用户态可以操作所有寄存器,也就是说基本上可以操作又有硬件。
访问硬件就只有几种情况
设备直接用地址线和数据线连接,包括一些网卡和显存等,操作系统将这个物理地址映射到虚拟地址,通过访问这个地址可以操作它。访问/dev/memory可以访问到所有物理地址。
通过io地址空间访问,即io,out指令访问。操作系统会设置这个权限,iopl,ioperm可以修改相应权限。
通过其他的控制芯片来访问,如pci总线上挂在一些控制芯片可以控制网卡。当然访问这个控制芯片的方法可以用上面的方法。
windows下应该也有相对应的api.
访问硬件就只有几种情况
设备直接用地址线和数据线连接,包括一些网卡和显存等,操作系统将这个物理地址映射到虚拟地址,通过访问这个地址可以操作它。访问/dev/memory可以访问到所有物理地址。
通过io地址空间访问,即io,out指令访问。操作系统会设置这个权限,iopl,ioperm可以修改相应权限。
通过其他的控制芯片来访问,如pci总线上挂在一些控制芯片可以控制网卡。当然访问这个控制芯片的方法可以用上面的方法。
windows下应该也有相对应的api.