[コンポーネント言語]システムコール
System call
システムコールに関連するヘッダ.
cd /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys
システムコール
システム呼び出しとは、オペレーティングシステムカーネルに特定のタスクを実行するようにプログラムが要求することです.次のタイプがあります.
システムコール番号
システム呼び出しを呼び出すには、システム呼び出しの番号を知る必要があります.
次のパスのsyscall.hで見つけられる
vim /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/syscall.h
システム呼び出し番号の取得
MacOSまたはBSDは、システムコールを複数のレベルに分けます.
システムコール番号の1番目(uper order bit)は、このシステムコールクラスを区別する番号です.
SYSCALL_CLASS_UNIX
クラスに含まれるシステム呼び出しであり、これらのクラスの番号は#define SYSCALL_CLASS_NONE 0 /* Invalid */
#define SYSCALL_CLASS_MACH 1 /* Mach */
#define SYSCALL_CLASS_UNIX 2 /* Unix/BSD */
#define SYSCALL_CLASS_MDEP 3 /* Machine-dependent */
#define SYSCALL_CLASS_DIAG 4 /* Diagnostics */
syscall_sw.h コール番号の例
すべてのUnixシステムコールは
0x200000 + unix syscall #
write号は4番なので
0x2000004
register
x86 64 register
システム呼び出しパラメータ
システム呼び出しで使用される6つのレジスタは、以下の順序でシステム呼び出しのパラメータとして使用される.
rdi
rsi
rdx
rcx
r8
r9
system call tutorial したがって、
rdi
にはfdが含まれ、rsi
には*bufが含まれ、rdx
にはcountが含まれているという関数の宣言が見られる.ssize_t read(int fd, void *buf, size_t count);
次のドキュメントでは、各システム呼び出しにどのレジスタをパラメータとして使用するかをまとめます.
system call parameters
例
Reference
この問題について([コンポーネント言語]システムコール), 我々は、より多くの情報をここで見つけました https://velog.io/@jehjong/Assembly-Language-시스템콜テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol