Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

asmに関するnobu-qのブックマーク (6)

  • introduction to x86-asm

    x86アセンブリ言語入門 昔に書いたのを発掘し, 若干手直しして出しました. 内容の古いところや間違ってるところがあればご指摘ください. 64bit環境についてはx64 アセンブリ言語プログラミングを参照してください. なおこのページではごく簡単なコードを書けるようになること, デバッグ時に知っておけばよいこともあるだろう程度の知識の取得を目指します. 高速化手法自体については触れません. レジスタについて 基用語 最初の一歩 Cとの連係 Cとの連係 その2 Cとの連係 その3 Windows DLL 少し応用 gasの場合は 実際に書くならこんなことも 簡易命令一覧

    nobu-q
    nobu-q 2009/08/08
  • x86_64 Assembly Language Programming

    レジスタの使い方は次の通りです. レジスタ用途保存 rax戻り値不要 rcx1番目の整数型引数不要 rdx2番目の整数型引数不要 r83番目の整数型引数不要 r94番目の整数型引数不要 r10, r11-必要なら呼び出し元(caller)で保存 r12〜r15, rdi, rsi, rbx, rbp, rsp-必要なら呼び出し側(callee)で保存 xm01番目の浮動小数型引数 / 戻り値不要 xm12番目の浮動小数型引数不要 xm23番目の浮動小数型引数不要 xm34番目の浮動小数型引数不要 xm4, xm5-必要なら呼び出し元(caller)で保存 xm6〜xm15-必要なら呼び出し側(callee)で保存 スタックは常に16byteアラインメントされています. ただし関数呼び出し直後は戻りアドレス(8byte)がpushされているため, 8(mod 1

    nobu-q
    nobu-q 2009/08/08
  • gccのx86インラインアセンブリに関して

    GCCでインラインアセンブリを使用 する方法と留意点等 for x86  (1999〜2006年10回改訂、2006年1月22日注意を追加、最終更新日2006年5月27日) 文: A. SAITOH <s-akira at users.sourceforge.net>  home ※システム名、CPU名は一般に開発会社の登録商標です。 以下の情報はあまり過度に信用しないで下さい。より正確な情報は、asやgccのinfoから得て下さい。 個々のプロセッサ命令の解説はここでは述べません。そのような技術資料は、インテルやAMDのウェブ サイトのdeveloper向けのページからpdf形式で入手できます。 以下の文及びプログラム例の運用結果に関して、筆者は一切責任を負いません。 参考文献 [0] D. Stancevic, K. Scheibler, J. Leto, Linux Assembly

    nobu-q
    nobu-q 2009/08/08
    gccインラインアセンブラの素晴らしいまとめ
  • Windows実行ファイルのバイナリ概要

    EXEファイルには具体的に、どのような情報が格納されているのでしょうか。通常、Visual C++やVisual Basic、Delphiなどのコンパイラが自動的に生成してくれるので、考えることはありませんが、今回はこの疑問に真っ向から勝負を挑んでいきます。 EXEは魔法の箱? 筆者は「ActiveBasic」というネイティブコンパイラ搭載型の統合開発環境を開発しています。コンパイラ開発イコール、EXEファイルの仕様をかなり細かい部分まで理解しなければならないという状況に置かれることを意味します。 Javaや.NETが騒がれる昨今、あえてEXEファイルというディープな内容に迫っていこうということで稿へ筆を入れ始めたわけですが、やはり、この手の話題はプログラマ魂がうずきます。このように感じる技術者の方は多いはず。しかしその反面、世の中にはアセンブラを書けないプログラマが数多く存在すると聞き

    Windows実行ファイルのバイナリ概要
    nobu-q
    nobu-q 2009/03/22
    8年前にこの記事が欲しかったなぁ
  • http://www.cs.rug.nl/~wladimir/decuda/

    nobu-q
    nobu-q 2009/02/08
    CUDAアセンブラ/逆アセンブラ
  • fnami: AMD64

    2^20+HMA #4 #1 物理アドレスと仮想アドレスのビット数はCPUID命令のEAX=80000008hで得られる。 #2 ES,CS,SS,DSは0。FS,GSはセグメントディスクリプタまたはモデル固有レジスタで指定。 #3 x86では、ページサイズ拡張または物理アドレス拡張を有効にすると2^36になるが、AMD64のlegacyモードではそれぞれ2^40、2^52になる。 #4 リアルモードの特殊な状態を使うと、2^32になる。 各モードの区別は次のビットで行う。 legacyモードとlongモード: EFER(モデル固有レジスタC0000080h)のLMEビット compatibilityモードと64ビットモード: コードセグメントディスクリプタのLビット compatibilityモード中の16/32ビット: コードセグメントディスクリプタのDビット(legacyモードと同様

  • 1