小编sca*_*ula的帖子

理解和分析汇编代码

任何人都可以帮我理解这个汇编代码吗?我对汇编语言完全不熟悉,我只是想不出来......下面的汇编代码应该产生这个函数:

func(int a){return a*34}

评论//我的想法应该是什么意思,如果我错了,请纠正我

//esp = stack-pointer, ebp = callee saved, eax = return value

pushl %ebp                   // a is pushed on stack
movl %esp,%ebp               // a = stackpointer
movl 8(%ebp),%eax            // eax = M(8 + a).But what is in M(8 + a)?
sall $4,%eax                 // eax << 4
addl 8(%ebp),%eax            // eax = M(8 + a)
addl %eax,%eax               // eax = eax + eax
movl %ebp,%esp               // eax = t
popl %ebp                    // pop a from stack
ret …
Run Code Online (Sandbox Code Playgroud)

x86 assembly

3
推荐指数
1
解决办法
106
查看次数

术语和代码行的平等

任何人都可以一步一步解释我,这种平等如何能够成立?

((a^b)&~b)|(~(a^b)&b)  == a
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

c bit-manipulation bitwise-operators logical-operators

1
推荐指数
1
解决办法
61
查看次数