私は難題として、そしてパフォーマンスのために、アセンブリで単純なサーバーを作成しています。私が知っている唯一の方法は、システムコール経由です。 (int 0x80を使って)明らかに、アセンブル時やロード時に割り当てられるよりも多くのメモリが必要になるので、読んで、主にmmap()を理解していないためにsbrk()アセンブリ内のsyscallとしてのLinux sbrk()
いずれにしても、Linuxはsbrk()に対して割り込みを提供せず、brk()のみ割り込みを提供します。
だから... brk()を使用するために現在のプログラムブレークを見つけるにはどうすればよいですか?私はgetrlimit()を使うことを考えましたが、getrlimit()に渡すリソース(私が推測するプロセスID)を取得する方法はわかりません。または、sbrk()を実装するための他の方法があるはずですか?
ようこそスタックオーバーフロー! "私が知っている唯一の方法は、システムコール経由です。" 'sbrk'のようなライブラリ呼び出しもあります。あるいは、「libcなしのアセンブリで」という意味ですか? –
ライブラリーコールの作成方法がわかりませんでした。 (やはり実際には分かりません)ライブラリ呼び出しはシステム呼び出しより速いと思いますか? –
'mmap'は単純です。しかし、小さな割り当てにはうまくいかない。 – doug65536