Intel x86 の命令

Menu Menu


Intel x86 の命令


addressing mode

    (address)     *address    address参照
    pointer       *pointer    pointer参照
    (%esp)        *(%esp)     indexed
    2(%esp)       *(%esp+w)   indexed + offset 
    %esp          %esp        register参照
    _234	  *(234)      変数アドレス
    $234	  234         数値


load store

    movl     load/store  from memory
	movl %eax,%edx              move long  (%eax to %edx)
	movb %eal,(%edx)            move byte
	movw %ax,(%edx)             move word
    lea    load effective address
	lea 5(%eax),%eax            %eax = 5 + %eax
    push/pop 
	pushl %eax
	popl %edx
    movsbl    sign extend (char to long)
	    movsbl 5(%eax),%eax
    movswl    sign extend (word to long)
	    movswl %si,%eax


compuation

    addl    add 
	   addl %edx,%ebx
    and     and
	   andl %eax,-4(%ebp)
    sal    arithmetic shift left
	    sall $4,%eax
    sar    arithmetic shift right
	    sarl $4,%eax
    cmp    compare
	    cmpl $0,-4(%ebp)
    neg    negative
	    negl %edx
    inc     increment
	    incl _ptr
    dec     decrement
	    decl _ptr
    XOR    exclusiv or
	    xorl %eax,%eax
    rol    rotate left
    ror    rotate right
    imull    multiply              
	    imull -4(%ebp),%eax        -4(%ebp) *= %eax
    idiv    divide    (signed)
	    xor %eax,%eax
	    idiv -4(%ebp)         %edx = %edx:%eax / -4(%ebp)
				  %eax = %edx:%eax % -4(%ebp)
    divl     divide    (unsigned)
	    ctld
	    divl -4(%ebp)         %edx = %eax / -4(%ebp)
				  %eax = %eax % -4(%ebp)
    or     or
	    orl %eax,-4(%ebp)
    subtract
	   subl $8,%esp


branch

    jmp    relative jump 
    call   subroutine call
    jxx    conditional branch
	    je, jne, 
	    jl, jle, jg, jge       signed
	    jb, jbe, ja, jae       unsigned
    ret    return from subroutine


miscellaneous

    leave    unlink opeation
    .align   alignment
    nop    no operation

Shinji KONO / Fri Jul 13 16:00:59 2001