2022-01-01から1年間の記事一覧

アセンブリ言語とCで遊ぶ

x86-64のアセンブリ言語とCの呼び出し規約のお勉強のため、アセンブリ言語で書いた関数をCから呼び出してみました。 アセンブルにはnasm、Cのコンパイルにはgccを使っています。 Cのプログラムは以下の通り。 appという関数を実行して結果をprintfするだけで…

SBCLの実装を追う ~car, cdr, cons~

なんとなく興味があったのでdisassembleを使ってSBCLのcar、cdr、consの中を追ってみました。 CPUのアーキテクチャはx64です。 carとcdrをdisassembleしてみます。 CL-USER> (disassemble #'car) ; disassembly for CAR ; Size: 12 bytes. Origin: #x52A3B48…

複数プロセッサーの設定だとVirtualBoxがうまく動かない問題への対処

VirtualBoxで複数のプロセッサーを使う設定してもうまく動かないということがしばらく続いていたのですがようやく決着がついたので忘れないようにメモしておきます。 以下がうまく動いた環境です。 Host OS: Windows 10 Pro VirtualBox 6.1.26 Guest OS Xubu…

Windows上でeclを使ってCommon Lispの関数をC++から実行する

はじめに Windows上でeclを使ってCommon Lispの関数をC++から実行する方法を紹介します。 eclを使えばC++からCommon Lispを実行することができるため、 エントリポイントはプラットフォームが提供するC++のDSLで実装するしかなさそうなんだけど、 メインの処…