从高级语言翻译成IA-32

时间:2011-04-02 17:56:32

标签: java intel

有人可以在不使用任何全局变量的情况下将此高级代码转换为IA-32程序集吗?我只需要它作为我必须做的其他工作的一个例子。谢谢。整数是32位,字符是8位。

class MyString{
   char buff[100];
   int len;

   void deleteChar(char ch){
      int to = 0;
      for (int from = 0; from < this.length; from++){
          char nextch = this.buff[from];
          if (nextch != ch){
             this.buff[to] = nextch;
             to++;
          }
      }
   }
}

1 个答案:

答案 0 :(得分:0)

以下是gcc在给出时生成的内容:

void delete_char(char ch, char buf[], int len) {
        int from, to;
        for (from=0,to=0; from<len; ++from)
                if (buf[from] != ch)
                        buf[to++] = buf[from];
}


_delete_char:
        pushl   %ebp
        movl    %esp, %ebp
        subl    $40, %esp
        movl    8(%ebp), %eax
        movb    %al, -28(%ebp)
        movl    $0, -12(%ebp)
        movl    $0, -16(%ebp)
        jmp     L2
L3:
        movl    -12(%ebp), %eax
        addl    12(%ebp), %eax
        movb    (%eax), %al
        cmpb    -28(%ebp), %al
        je      L4
        movl    -16(%ebp), %eax
        movl    %eax, %edx
        addl    12(%ebp), %edx
        movl    -12(%ebp), %eax
        addl    12(%ebp), %eax
        movb    (%eax), %al
        movb    %al, (%edx)
        incl    -16(%ebp)
L4:
        incl    -12(%ebp)
L2:
        movl    -12(%ebp), %eax
        cmpl    16(%ebp), %eax
        jl      L3
        leave
        ret