今回はアセンブリに関してのあるあるのトラブル?の解決策をまとめておきます。そもそもアセンブリに手を出した経緯意図してはOSを作ってみたかったからなんですが、ハーバードの授業 を見つつコンピューターサイエンスを愚直に勉強しています。そこでアセンブリというものを学ばなければならないのか、と思いやっています。まあCとかもやらないといけないんですけどこっちに興味を持ったのでとりあえずです。
では本題のシステムコールについてなんですが普通のLinuxの場合だと例えばx86_64でwrite、exitそれぞれのシステムコールは1と4になります。まあ詳細は次などを参考にしてもらって で、これそのままMacで書いても動かなかったんです。色々調べました。結論としては
0x2000000を足すだけです。つまり、(0x2000000 + unix syscall)です。次のリンクが参考になりました。 ここで記事を終えてもいいのですがどうやってこれを見つけたのか個人的に気になりまして調べますと まで行ったんですが詳細はわかりませんでした。もしわかる人がいればどうやって0x2000000を足せばいいかわかるまでの経緯をコメントください。。
ちなみに32bitで使われてたint 0x80は64bitではsyscallになるので注意を。でわ