タグ

アセンブラに関するhat-tunのブックマーク (6)

  • プログラムの森 30日でできる!OS自作入門 〜3日目-その2〜

    目次へ 前へ  次へ 3日目 その2です。 更新が1週間空きましたが、別にサボっていたわけではありません。 著者製ツールを極力使わないという自分ルールに縛られていました。 具体的にいうと、ld等のリンカに当たる、obj2bim と bim2hrbというツールです。 このツールを使用せずに、アセンブラで作成したオブジェクトファイルと、 C言語で作成したオブジェクトファイルをリンクしようとしていました。 とりあえず、順番にいきます。 今までアセンブラのみでしたが、今回からC言語が加わっています。 それに伴って、OSの体であるoslite.sysの作り方が大きく変わっています。 流れを書くと、 アセンブラでOSのヘッダー部分を記述(asmhead.asm) C言語でOSの処理部分を記述(bootpack.c) アセンブラでC言語だけでは手に負えない部分を記述(nasmfanc.asm) 2と3

  • Mac で OS をつくる(3日目) « 鵺的:想空間

  • nasm

  • ブートローダー - cheshirecatsのメモ

    パソコンが起動して、一番初めに実行されるプログラム、ブートローダーに関する備忘録です。 面倒な処理をかけているものが多く、ここを理解できずに挫折した人も多かったのでは無いでしょうか(私は昔、ここで挫折しました)。 まず始めに、ブートセクタについて、簡単に説明します。 詳しく知りたい方は、”ブートセクタ”や”MBR”などで検索してみてください。 パソコンの電源が入ると、まずBIOSが起動し、各種初期化を行います。 その後、BIOSはOSの読み込みを行うわけですが、OSがどの媒体(HDDなど)に記録されているのか、 どのようなフォーマットで初期化されているのか分かりません (調べるようにすることは可能ですが、そうしてしまうと新しいフォーマットに対応できなくなってしまいます)。 そこで、媒体の先頭512BにはOSを読み込むためのプログラムを記録する領域として予約されることになりました。 ここが、

    ブートローダー - cheshirecatsのメモ
  • stripコマンド - MUGI COM

    binutilsのstripコマンドはシンボル情報を削除するためのコマンドだ。シンボル情報は関数などの名前を記述してあり、hogehogeのアドレスはどこか?といった情報が読み取れる。gdbやld がこれらの情報を使用する。 よく使うオプションは以下のとおり。 strip -g デバッグ情報を削除 strip -X ローカルシンボル (たいてい"L","."ではじまる)を削除 strip -x グローバルでないシンボルを削除(-Xより削除範囲が広い) strip -s すべてのシンボルを削除(既定値) ライブラリ(.aや.o)は -g以外を指定するとリンクできないことがある。実行形式(.exe)はリンクされることがないので-sを使うことができる。WindowsのDLLがロードされる際はシンボル情報は関係ないので.exeと同じくstrip -sでOK。 シンボル情報の話が出てきたので、obj

    stripコマンド - MUGI COM
  • セグメントレジスタ

    セグメントレジスタの種類 以前説明した 8086 のレジスタ群の中に「セグメントレジスタ」が存在します このレジスタは、前回説明したセグメントアドレスを管理するものです セグメントレジスタは、セグメントアドレスを指定するのに用いられます メモリにアクセスする時、コンピュータはセグメントレジスタを参照します セグメントレジスタは全てで4つ存在し、それぞれに専用の役割が存在します セグメントレジスタは、CS(コード)、DS(データ)、ES(エクストラ)、SS(スタック)の4つあり CSであれば、コードセグメントの略がレジスタ名となっているのがわかります CSレジスタは、自分自身のセグメントです このレジスタが指すセグメントアドレスは、実行中の機械語プログラムが格納されているアドレスです CPUが、機械語を実行するために必要で、自動的に使用されます DSレジスタは、データを格納する専用のセグメン

  • 1