Intel x86 の命令

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
    sbl    sign extend (char to long)
	    movsbl 5(%eax),%eax
    swl    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



Kono's home page http://bw-www.ie.u-ryukyu.ac.jp/~kono/