アセンブリ言語 にて
(下の話はLinux前提の話)
call _write にてwrite関数を呼び出すのと
(最終的に機械語でwriteシステムコール)
syscall命令を使って最終的に機械語でwriteシステムコール
を呼び出すのでは
一体何が違うのかという質問を昨日しました。
その過程の中でwindowsにはsyscall関数はないけど
syscall命令はできると・・・
結構丁寧に解説をいただいたのですが
それでも理解できませんでした・・・。
ので、分からないところをおしえていただきたいです。
質問
まず・・・
string
1windows・・・ 2〇 syscall命令 3× syscall関数
string
1Linux・・・ 2〇 syscall命令 3〇 syscall関数
で、そもそもの話
SYSCALL命令自体がLinux前提の命令なのですよね?
だから・・・windowsで使ったとしても使い物にならない。
SYSCALL関数はC言語から呼び出すための
関数。(Cの中から呼び出せば勝手にシステムコールされる・・・?)
参考リンク
上記の記事では、windows上でsyscall関数(?)を定義しています。
(つまりは、syscall関数を使えるようにするのですよね?)
それは・・・
Linuxとwindowsでは設定するレジスタとかが違うから・・・
ん?じゃあ、wiondowsの設定に合わせてレジスタを設定し
syscall命令を使えばいいじゃないか
と思ったのですが、できないのでしょうか?
分からないので教えてください。
回答2件
あなたの回答
tips
プレビュー