代码之家  ›  专栏  ›  技术社区  ›  Keshan

在Linux中使用汇编语言处理GUI[关闭]

  •  0
  • Keshan  · 技术社区  · 15 年前

    我对汇编语言还很陌生。我对在windows上工作的MASM有一点经验。我想知道如何在Linux中处理GUI(我在Linux上用gcc编写了简单的汇编程序),我想知道是否有人能给我一些资源,特别是编码示例。

    谢谢!!

    2 回复  |  直到 15 年前
        2
  •  1
  •   Peter Cordes    8 年前

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

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


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

    https://en.wikipedia.org/wiki/Virtual_console#Interface 提及 DirectFB , DRI , SDL 还有老人 SVGALib .

    更改视频模式通常仍需要系统调用,但您可以加载/存储到视频RAM。不同的库处理vsync/double buffering/whatever的方式可能不同。

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

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

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

    免责声明:我有 个人编写的软件可以做到这一点,但是有一些例子 FBI (framebuffer image viewer) . 我已经使用ssh和/或SysRQ恢复了控制台,但在 使用 但有缺陷的软件和/或驱动程序。

    推荐文章