Explore "Full-Stack" in depth!

情報系の専門学校で、今は機械学習に的を絞って学習中。プログラミングを趣味でやりつつ、IT系のあらゆる知識と技術を身に付けるべく奮闘中。

IA-32 Architectures Developer's Manual 3章まとめ

目次

  • 目次
  • 概要
  • 動作モード
    • 保護モード・プロテクトモード
    • 実アドレスモード・リアルモード
    • SMM( System Management Mode)
  • IA-32における基本実行環境
  • メモリ構成
    • フラットメモリモデル
    • セグメント化メモリモデル
    • 動作モードとそれに対応するメモリ構成
  • 命令ポインタ

概要

IA-32 マニュアルを読み始めました。
x86ニーモニックをバイナリに変換するアセンブラ自作をやる上で、
x86アーキテクチャの理解が必要だと思ったからです。

無料で読めるドキュメントとしては破格の詳しさなので、
システムプログラミングに興味のある人は全員読むべきです。

今回はこのマニュアルのうち3章の内容をベースにしながら、
自身で調べたことをまとめて紹介していこうと思います。

続きを読む

readelf -S を簡易実装してセクションヘッダを理解する

目次

  • 目次
  • 概要
  • 前提:セクションヘッダとは?
  • 本題1:実装
  • 本題2:セクション名のテーブルについて
  • 総評

概要

drumato.hatenablog.com

こちらの記事の続きです。

一応今回でreadelfは最終回になると思います。

今回はセクションヘッダを解析するコードを書きました。

ソースコードはこちらに。
elfパッケージを見てくださいね。

github.com

続きを読む

readelf -lを簡易実装してELFフォーマットの理解を深める。

目次

  • 目次
  • 概要
  • 前提:プログラムヘッダテーブルとは?
  • 本題
    • コードリーディングで情報集め
    • 実装
  • 総評

概要

こちらの記事の続きです

drumato.hatenablog.com

ELFヘッダのあとは、
プログラムヘッダの解析 に移るのが自然な流れだと思います。

今回も ソースコードベース で見ていくことで、
バイナリに慣れていない人にも理解できる記事を目指します。

GitHubを参照しながら読み進めて頂ければと思います。

https://github.com/Drumato/gocc/tree/master/elfgithub.com

続きを読む

バイナリ何もわからない人に送る"ソースコード視点"のELFヘッダ解説

目次

  • 目次
  • 概要
  • まずはおさらい
  • 本題:readelf
  • 総評

概要

ELFフォーマットを理解するための試み第二弾。
こちらの記事の続きと言ってもいいです。

drumato.hatenablog.com

上記の記事には間違いが多いので注意してください。
本記事バイナリ何もわからない人に送るELFヘッダ解説が正確です。

自作readelfの完成度を高める為にも、
単純にELFを勉強する教材として優れているという事からも、
本家readelfのコードリーディングは適切だと考えました。

今回は-hオプションに限定していきます。

続きを読む

readelf -hの簡易版・省略版を作成するミニ記事

目次

  • 目次
  • 概要
  • 本題:ELFヘッダを見る
  • 本題2:GoでELFヘッダを解析する
  • 総評

概要

コンパイラ自作をとても楽しくやっている私ですが、
どうせコンパイラを作るならバイナリ生成までやらせたいものです。

もっと具体的に言うと、
アセンブリから機械語を生成するアセンブラ( ソフトウェアとしての )を作ってみたいですよね。

アセンブラ自作への欲求はコンパイラ自作を楽しんでる人たちで共有していると思いますが、
これはかなり難しくて、少なくとも次の知識が 必須 になります。
必要な知識のごく一部のみを取り上げます。

まずはELFの理解を深めようということで、
readelfの自作を始めました。

readelfLinuxで用いることができるコマンドで、
elfフォーマットのファイルを見やすく表示したり、
いろんな情報を簡単に見ることができるというものです。

一番有名なのは

$ readelf -h hello

のように、
ELFヘッダを解析するオプション-hを付けた出力ですね。

この ELFヘッダ解析 に焦点を当てて、
ミニ記事ではありますがお話をしていきたいと思います。

今回用いているコードは

github.com

elf/以下に置いてあるので参考までに。

続きを読む

runcのcreateコマンドを読む。

目次

  • 目次
  • 概要
    • ライセンス
  • 前提:createコマンドとは
  • main.go
    • 定数
    • コマンド定義
  • create.go
    • loadSpec()
  • startContainer()
    • notifySocket
  • 総評

概要

DockerでLow-Level runtimeとして現在も活躍している opencontainers/runc
コードを読んで行きたいとおもいます。

Cookpad 1Day Container Internに参加した時にコンテナランタイムに興味を持ったので、
コードリーディングをすることで実装を理解していきたいと思います。

今回はrunc createコマンドに着目して読んでいきます。

runner.Run()とか読めてない部分もありますし、
自分が読んで満足しちゃってる部分もあると思うので、
わかりやすく解説!という記事ではないです。

気になる方はご自身でゆっくり読んでみるのをおすすめします。

ライセンス

Apache License 2.0

続きを読む

最近知った深層学習系の知識(一部)をまとめる

目次

  • 目次
  • 概要
  • Conditioning Augmentation
  • MSGAN(mode seeking GAN)
  • バッチ正規化
  • AttnGANの優位性-word-level features-
  • Gated Linear Units
  • Residual Block
  • 総評

概要

Cybozu Labs Youth 8th 研究生として、
今は深層生成モデルをテーマに勉強をしています。

8期として入ったのですが、ほぼ終わるところだったので、
卒業は9期とおなじになると思います。

ところで、Text-To-Imageタスクのモデルを勉強していると、
それこそディープラーニングの入門書には書いてないような内容の概念が
それはもうごろごろと登場します。

今回はテーマが決まってから16日あまりが経過したので、
最近調べた知識を適当にまとめておこうと思います。

この記事でその内容が理解できるというものではなく、
論文を読む上でこういう知識が必要になってきたよという経験談をお話できればと思っています。

実際に各項目の深い内容を知りたい方は、
記載しているリンク先に飛んで記事・論文を読むようにしてください。
私がここで書く中途半端な解説よりよっぽど詳しいし厳密だと思うので。

続きを読む