Intel EMT64 の命令
Menu Menu
Intel EMT64 の命令
addressing mode
(address) *address address参照 pointer *pointer pointer参照 (%rsp) *(%rsp) indexed (%rip) *(%rip) program counter 相対 2(%rsp) *(%rsp+w) indexed + offset %rsp %rsp register参照 _234 *(234) 変数アドレス $234 234 数値
load store
movq load/store from memory movq %rax,%rdx 64bit move quad (%rax to %rdx) movl %eax,%edx 32bit move long (%rax to %edx) movw %ax,(%rdx) 16bit move word movb %eal,(%rdx) 8bit move byte lea load effective address lea 5(%rax),%eax %eax = 5 + %eax push/pop pushq %rax popq %rdx movsbl sign extend (char to long) movsbl 5(%rax),%eax 8bit signed to 32bit movswl sign extend (word to long) movswl %si,%eax
compuation
addq add addq %rdx,%rbx and and andl %eax,-4(%rbp) sal arithmetic shift left sall $4,%eax sar arithmetic shift right sarl $4,%eax cmp compare cmpl $0,-4(%rbp) 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(%rbp),%eax -4(%rbp) *= %eax idiv divide (signed) xor %eax,%eax idiv -4(%rbp) %edx = %edx:%eax / -4(%rbp) %eax = %edx:%eax % -4(%rbp) divl divide (unsigned) ctld divl -4(%rbp) %edx = %eax / -4(%rbp) %eax = %eax % -4(%rbp) or or orl %eax,-4(%rbp) subtract subq $8,%rsp
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