【发布时间】:2024-10-24 01:55:02
【问题描述】:
我现在正在阅读包syscall中的源代码,遇到了一些问题:
由于我完全是 syscall 和 assembly 的菜鸟,所以请不要犹豫,分享你所知道的任何事情:)
首先关于funcRawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno):它的参数trap, a1, a2, a3&返回值r1 r2是什么意思?我搜索了文档和网站,但似乎没有关于此的描述。
其次,由于我使用的是darwin/amd64,所以我搜索了源代码并在这里找到了它:
http://golang.org/src/pkg/syscall/asm_darwin_amd64.s?h=RawSyscall
好像是assemble写的(看不懂),能不能解释一下第61-80行发生了什么,第76行下ok1:部分是什么意思?
我还在http://golang.org/src/pkg/syscall/zsyscall_darwin_amd64.go 中找到了一些代码,zsyscall 的文件名是什么意思?
syscall 和 rawsyscall 有什么区别?
如果我想编写自己的系统调用函数,如何以及何时使用它们(是的,os 包提供了很多选择,但仍有一些情况它没有涵盖)?
这么多菜鸟问题,感谢您的耐心阅读和回答:)
【问题讨论】:
标签: unix assembly operating-system go system-calls