2010-05-08 96 views
1

我想翻译如下:解释汇编指令

Action: 
pushl %ebp 
movl %esp, %eax 
subl $0x32, %esp 
movl $0x0, -0x8(%eax) 
movl $0x0, -0x4(%eax) 
movl -0x4(%eax), %eax 
cmpl $0x32(%eax), %ebp 
movl -0x4(%ebp), %eax 
sall $0x2, %ebp 
addl 0x8(%ebp), %ebp 
movl (%ebp), %ebp 
addl %ebp, -0x8(%eax) 
addl $0x1, -0x4(%eax) 

什么是翻译这个代码的最佳方式?

+0

尔。你故意杀死了大部分问题吗?这些指令不存在(你可能是指pushl和movl),movl需要参数。如果发生意外,你可以[回滚](http://stackoverflow.com/posts/2794477/revisions) – 2010-05-08 15:05:17

+0

谢谢。我们走了。 – 2010-05-08 15:08:45

+1

学习汇编语言的最佳方法是什么?读一本书。 – 2010-05-09 19:04:46

回答

1

对于原题:

mov  -0x4(%ebp), %eax  # eax = z; 
mov  0xc(%ebp), %edx  # edx = y; 
mov  (%edx, %eax, 4), %eax # eax = *(edx + eax + 4) 
add  $0x3, %eax    # eax += 3 
movb $0x41, (%eax)   # *eax = 'A' 

干运行报表给:

y[z + 4][3] = 'A';