タグ

アセンブリ言語に関するyusuketのブックマーク (6)

  • 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

  • x64 アセンブリーの概要 | iSUS

    この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Introduction to x64 Assembly」の日語参考訳です。 はじめに 長年、PC プログラマーは x86 アセンブリーを使用して、高いパフォーマンスが要求されるコードを記述してきました。しかしながら、32 ビットの PC は 64 ビットに取って代わられつつあり、使用されるアセンブリー・コードも変わりました。この記事では、x64 アセンブリーの概要を説明します。x86 コードの知識はなくても構いませんが、あるとより理解しやすいでしょう。 x64 とは、インテルおよび AMD の 32 ビット x86 命令セット・アーキテクチャー (ISA) の 64 ビット拡張を表す一般的な名称です。AMD が最初に x64 を発表し、当初は x86-64 と呼ばれていましたが、後に AMD64 に変更されました。イン

    x64 アセンブリーの概要 | iSUS
  • 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モードと同様

  • Assembly Programming Linux (system call)

    付録 B. システムコールの仕組み すでに説明した(4. Linux カーネルとシステムコール) ように Linux の システムコールはレジスタに引数を設定して int 0x80 によるソフトウェア 割り込みで呼び出します. ここでは linux-2.2.16 のソースから実際にシステムコール呼び出しの 仕組みを次の3つの部分にわけて解説します. 割込みによるシステムコールをカーネルが初期化する部分 システムコールが呼び出された場合に実行される部分 システムコールの実装 【注】 ソースリスト中で行頭の数字は行番号を示しています. カーネルのバージョンによって差がありますが目安にはなるでしょう. 1. 割込みによるシステムコールをカーネルが初期化する部分 最初にカーネルの起動部分で割り込みテーブルの設定をしています. /usr/src/linux/init/main.c: 1350 as

  • sandpile.org -- The world's leading source for technical x86 processor information.

    The world's leading source for technical x86 processor information.

  • Assembler

    Netwide Assembler(NASM)のマニュアルから、必要なことを抜き出して 書いておこうかな、と思う。 ちなみに、NASMの入手は から。 Contents Chapter 2: Running NASM 2.2 Quick Start for MASM Users 2.2.2 NASM Requires Square Brackets For Memory References 2.2.3 NASM Doesn't Store Variable Types 2.2.4 NASM Doesn't ASSUME 2.2.5 NASM Doesn't Support Memory Models 2.2.7 Other Differences Chapter 3: The NASM Language 3.1 Layout of a NASM Source Line 3.2 Pse

  • 1