タグ

ブックマーク / www.mztn.org (3)

  • Assembly Programming on x86-64 Linux (B)

    命令の出現頻度 ubuntu-8.10-desktop-amd64 の 64ビット版の bash-3.2.39 と gimp-2.6.1 で使用 (シェアドライブラリは除く)されている 762,506 命令を集計してみました。 nop命令は除き、Jcc、CMOVcc、SETcc は条件部分をまとめています。 比較のため ubuntu-8.04-desktop-x86 の 32ビット版の bash-3.2.33 と gimp-2.4.5 でも 826,488 命令を集計してみました。 x86系CPUは32ビットでも64ビットでも、メモリ/レジスタ間の転送に MOV 命令を使用するため、圧倒的に MOV 命令の 使用率が大きくなっています。64ビットでは関数の引数の受け渡しにスタックを用いないため、PUSH と POP の使用頻度が少なくなっています。 また浮動小数点演算について、gcc は

  • Assembly Programming on x86-64 Linux

    はじめに だれでも64ビットのコンピュータを所有する時代になってきました。最近の PC では WindowsXP や WindowsVistaといった32ビットのOSが使われているものの、Core2Duo を代表として、すべて amd64 や intel64 といった 64bitに対応した CPU が搭載されています。昔、インテルの 80386 や 80486 という 32bitCPU は10年近く MS-DOS や Windows3.x といった16bitのOSを使うための高速な8086として使われていました。Windows95の時代になって、やっと32bitの機能が一般的に使われ始めました。2009年現在でも64bitに対応した Windows はサーバ用として一部で活躍しているだけではないでしょうか。Linux という無料で使える OS でも、すでに64bit版が安定して使える

  • Assembly Programming on x86-64 Linux (06)

    x86-64 命令の概要 一般のプログラムで使用する整数用の命令を解説します。浮動小数点を扱うFPU や SSE2 の命令は(当面)扱いません。 64ビットモードで使用可能な命令に限定しています。命令の前においてパラメータのサイズを指定するプリフィックスは デフォルトアドレスサイズは64ビット、デフォルトオペランドサイズは32ビットの場合に使用するものとなります。 データ転送命令 レジスタ間、レジスタ・メモリ間でデータをコピーする命令をデータ転送命令といいます。 プログラム中で最もよく使われる命令です。 データ転送命令は単にコピーを行う MOVe とデータのサイズを拡張するCBW、CWD、 データサイズを拡張して転送する MOVESX (MOVe Sign eXtend)、 MOVEZX (MOVe Zero eXtend)があります。 フラグレジスタの内容(条件)ににしたがって転送をする

    nurse
    nurse 2013/04/22
  • 1