我想用 Linux 汇编制作一个游戏。有没有办法通过 Linux 内核系统调用在屏幕上显示(或绘制)图片?
我搜索了它,但我得到的所有结果都是关于 DOS 汇编语言的。
最佳答案
这是可能的,但现在用汇编开发软件似乎是一种极其乏味和缓慢的方法。
假设您在 i386 平台上运行(每个平台的系统调用 ABI 都不同),查看 uClibcs libc/sysdeps/linux/i386/syscall.S:
.text
.global syscall
.type syscall,%function
syscall:
pushl %ebp
pushl %edi
pushl %esi
pushl %ebx
movl 44(%esp),%ebp /* Load the 6 syscall argument registers */
movl 40(%esp),%edi
movl 36(%esp),%esi
movl 32(%esp),%edx
movl 28(%esp),%ecx
movl 24(%esp),%ebx
movl 20(%esp),%eax /* Load syscall number into %eax. */
int $0x80
popl %ebx
popl %esi
popl %edi
popl %ebp
cmpl $-4095,%eax
jae __syscall_error
ret /* Return to caller. */
.size syscall,.-syscall
这假定所有系统调用参数以及系统调用编号都已加载到堆栈中。
您可以在 Linux 内核的 include/asm-generic/unistd.h 文件中找到系统调用编号。
既然您知道如何从程序集调用系统调用,您当然还需要知道要调用哪些系统调用。我建议阅读 Linux Framebuffer .与 X 交互会变得更加复杂。
关于linux - 如何在 Linux 上用汇编在屏幕上显示图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10130833/