Tomitomi's blog

勉強したこと、やってみたことなどを書き連ねていく場

Doom Emacs入れたメモ

はじめに

久しぶりにブログを書きます。 前まで、ブログを書くのにいろいろ気にしてしまって書けない状態だったのですが、これからはもう少し肩の力を抜いてメモ感覚で書いていこうと思います。

さて、最近はLisp言語にハマっています。 Fortlanに並ぶ古(いにしえ)の言語の1つですが、 その拡張性ゆえに今でも最新の言語と同じかそれ以上のパワーを持っている(と自分は思っている)言語です。 ロマンしかないので自分も勉強したいと思い、入門しようと思っています。

Lispと言えばEmacsですし、何ならモダンな感じにしたいなぁと思って、検索していたら、こんな記事を見つけました。 note.com

これは、ぜひ入れたい!!! と思ったので、入れました。 その際のインストール作業のメモを共有します。

  • はじめに
  • 先にインストールした後のスクショを置いておきます。
  • 環境
  • emacsのインストール
  • doomemacsのインストール
  • つまづいた点
  • おわり
続きを読む

シェルスクリプト入門 ~数あてゲーム~

はじめに

シェルスクリプトは、シェル操作を自動化することに特化したスクリプト言語です。 特定用途に特化しているとは言え、変数やif文、for文やwhile文、関数などが使えるため、 手続き型プログラミング言語の一種と見ることもできます。 そこで、本稿では、他のプログラミング言語の入門書のように、 数あてゲームを作りながら、シェルスクリプトの基本的な要素や制御構造の導入をしようと思います。

続きを読む

C言語のポインタとは何かを考えた

前置き

ゼミでポインタとは何かという話になって、その時に納得のいく説明ができていなかったので、自分なりに考えてみたことを書いてみました。

ポインタとは

wikipediaのポインタのページには「あるオブジェクトがなんらかの論理的位置情報でアクセスできるとき、それを参照する(指し示す)ものである。」[^lib1]とあります。 簡潔にすると「変数を参照するのに必要十分な情報」ということかと思いました。 以下、「変数を参照するのに必要十分な情報」をポインタの定義として、C言語のポインタとは何かを考えたいと思います。

続きを読む

makeコマンドで複数のコマンドをいい感じに同時実行する.

 実行に時間がかかる複数のコマンドを実行するときに, 同時に走るコマンドの数をよしなに調整してほしいと思ったことってありませんか? 自分は研究でパラメータが違う複数のシミュレーションを同時に回すことがあります. そういう時,できるだけシミュレーションに時間を取りたくないので, CPUのスレッドをすべて使い切るようにして最大の効率でシミュレーションを回したいです. 以前に学会で発表するデータを取ったときは,この作業を手動でやっていました. 正直めんどくさいですし,自動化したいです.

続きを読む

インラインアセンブラに関するメモ

インラインアセンブラに関するメモです。

こういうリファレンス系はgithub pagesを使って書こうと思っていたのですが、markdownのプレビューをする環境を構築するのが面倒そうだったので、 今後はこっちで書こうと思います。

基本的な構文

基本的な構文は以下のようになる。 出力オペランド、入力オペランド、破壊されるレジスタのリストは省略可。

__asm__ ( "アセンブリテンプレート"
    : 出力オペランド
    : 入力オペランド
    : 破壊されるレジスタのリスト
);
続きを読む

ユーザーランドでコンテキストスイッチ的なものを作ってみた

xv6のソースコードを読むと、実行プロセスを切り替える過程は以下のように行われていることがわかります。

  1. タイマー割り込みによってプロセスのプログラムを中断して割り込みハンドラが実行される。
  2. 割り込みハンドラの最後で、割り込みハンドラからカーネルのスケジューラーに向けてコンテキストスイッチ
  3. スケジューラーは次に実行されるプロセスを選択したら、ページテーブルをそのプロセスのものに変える
  4. スケジューラーからプロセスにコンテキストスイッチ
続きを読む

Lispインタプリタ自作してみた。

先々週ぐらいにふと思い立って小規模なlispインタプリタを書き始めて、その後その上に関数実装するのにハマっていたのですが最近落ち着いてきたのでブログ記事にしました。

なぜ作った

clispLispやろうとするとすでにリストの操作関数などがたくさん用意してあって便利だと思うのですが、そういったものを自分で作ってみたいと 思ったのがきっかけです。 そこで、作るなら更地の状態から自分で関数を定義していって環境構築するのが楽しそうだと思ったのでインタプリタから自作しました。

続きを読む