X86缀编念书小结----cmp 完整顿版本

admin 2018-09-24人浏览过

  // hello.c

  void func(){}

  gcc 4.5.2, Ubuntu11.04 X86 默许的缀编

  .globl func

  .type func, @function

  func:

  pushl %ebp

  movl %esp, %ebp

  popl %ebp

  ret

  clang 2.8, Ubuntu11.04 X86

  .globl func

  .align 16, 0x90

  .type func,@function

  func:

  pushl %ebp

  movl %esp, %ebp

  popl %ebp

  ret

  .Ltmp0:

  .size func, .Ltmp0-func

  gcc 4.5.2, Ubuntu11.04 X86 Intel程式的缀编

  .globl func

  .type func, @function

  func:

  push ebp

  mov ebp, esp

  pop ebp

  ret

  cl 16 (即VC10), Windows Xp

  _func PROC

  ; 1 : void func(){}

  push ebp

  mov ebp, esp

  pop ebp

  ret 0

  _func ENDP

  特看壹个Sun Studio 11: C 5.8 compiler,SPARC架构(效力动器到来己unix-center)

  .global func

  .type func,#function

  func:

  save %sp,-96,%sp

  jmp %i7+8

  restore

  ...

  以及GCC 4.0.1,SPARC架构(效力动器到来己unix-center)

  .global func

  func:

  retl ! Result= nop

  .type func,2

  .size func,(.-func)

  ...

  二者标注的目的正好相反Intel语法,第壹个是目的操干数,第二个是源操干数。

  在Intel的语法中,基存放器用“[]”括宗到来

  hello.c

  int func(int i)

  {

  return 2 * i;

  }

  int main()

  {

  int s=func(255);

  return 0;

  }

  hello.s (gcc4.5.2, x86/ubuntu11.04)

  ===========================================================================

  

  表 3.5 无标记数比较环境转变指令

  

  表 3.6 带标记数比较环境转变指令

  

  表3.8 循环把持指令

  ================================================================