0

我对汇编编程语言很陌生。我对适用于 Windows 的 MASM 有一点经验。我想知道如何在 Linux 中处理 GUI。(我在 Linux 上使用 gcc 完成了简单的汇编程序)我希望有人能给我任何资源,特别是编码示例。

谢谢 !!

4

2 回答 2

1

如果你想去“低级别”,有(或曾经有)Linux + XFree86(现在称为 X.org)上的https://en.wikipedia.org/wiki/Direct_Graphics_Access 。

您可以将帧缓冲区映射到用户空间并使用加载/存储在其上绘制,而不是套接字上的read/write系统调用(GTK+ 函数调用的最终结果通常是通过套接字与 X 服务器通信)。


或者,当您的程序在没有 X 服务器(或其他显示服务器,如 Wayland)的虚拟控制台上运行时,有各种库允许或多或少地直接访问视频 RAM 和视频模式。

https://en.wikipedia.org/wiki/Virtual_console#Interface提到了DirectFBDRISDL和旧的SVGALib

更改视频模式通常仍需要系统调用,但您可以加载/存储到视频 RAM。不同的库大概有不同的方式来处理 vsync / 双缓冲 / 什么。

这不一定更快或更好:现代显卡不仅仅是哑帧缓冲区。他们拥有可以加速图形操作的 GPU 硬件,并且直接存储到视频 RAM 并没有利用它。

但是,如果您真的想直接访问视频 RAM,那么这些链接应该是一个很好的起点,可以在 Linux 下的虚拟控制台上的用户空间中实现它,希望在您使用这些链接时锁定整个机器的风险更小。程序有错误。

(不过,准备好从另一台机器上 SSH 并终止您的进程 + chvt。并确保启用神奇的 SysRQ 键来终止当前控制台上的所有进程,以及“unRaw”键盘输入。

免责声明:我没有亲自编写过执行此操作的软件,但有一些示例,例如FBI(帧缓冲图像查看器)不过,在使用有问题的软件和/或有问题的驱动程序后,我已经使用 ssh 和/或 SysRQ 恢复了控制台,而无需重新启动。

于 2018-07-01T00:42:24.113 回答