読者です 読者をやめる 読者になる 読者になる

レガシーコード生産ガイド

私に教えられることなら

NASM / Linux x86-64でjonesforthを移植してみる 1

asm forth

アセンブリの勉強どこから始めていいかわからないので、とりあえず動作を理解している(と思ってる)jonesforthのコードの移植を通じて、必要な知識を得ようとしてみる。

phaendal/jf64 · GitHub

とりあえず今日は昨日書いたHelloWorldに、リターンスタックの出し入れをテストしつつNEXTルーチンから飛んでみた。

学んだ事は(おそらく間違いもある)

  • NASMでのマクロの書き方。マクロ名の後に引数の数を指定する。
  • レジスタに入ってるアドレスのメモリ内容は[レジスタ名]オペランドに使える
  • 64bitでの1ワード?の指定はqdqとかlodsqとか
  • NASMではresbでgasの.spaceと同じようにメモリを空ける
  • add rax, 8のように、整数データはそのまま書いて使う(gasだと$8)

謎なのは、movmovqみたいに64bitだと指定しなくていい、というよりmovqにするとエラーが出るということ。64bit CPUだから当たり前ってことなのかな。

広告を非表示にする