我在这里挑战。
我正在参加名为Mini #2的练习:初级反编译器
。在这里,我必须查看一些程序集,然后将其转换为c函数。程序集如下所示:
Assembly (x86-64)
0x00: push rbp
0x01: mov rbp,rsp
0x04: mov DWORD PTR [rbp-0x4],edi
0x07: mov DWORD PTR [rbp-0x8],esi
0x0a: mov eax,DWORD PTR [rbp-0x4]
0x0d: cmp eax,DWORD PTR [rbp-0x8]
0x10: jl 17 <foo+0x17>
0x12: mov eax,DWORD PTR [rbp-0x4]
0x15: jmp 1a <foo+0x1a>
0x17: mov eax,DWORD PTR [rbp-0x8]
0x1a: pop rbp
0x1b: ret
因此,行:0x04:mov DWORD PTR[rbp-0x4],edi 0x07:mov DUORD PTR[rbp-x8],esi我很有把握对应于两个参数。然后是带有il
的if语句,它决定函数的结束方式。我自己的翻译是这样的:
int foo(int a, int b) {
int c = a;
if (c > a){
c = a;
} else {
c = b;
}
return c;
}
因为在我看来,函数所做的一切都是比较两个输入,然后返回较大的输入,将较大的输入存储在eax中。
在线代码检查器告诉我我错了。我可能哪里出错了?
我不知道你的checker有多挑剔,但是rbp下面的存储是针对局部变量的,所以它是把形参复制到局部变量内存中。
此外,您正在将第一个参数值与其本身进行比较,因此执行
此外,你是对的,这个关系应该被否定,才能把它带到C,但是相反
本文向大家介绍C# if, if...else, if... else if ,包括了C# if, if...else, if... else if 的使用技巧和注意事项,需要的朋友参考一下 示例 该if语句用于控制程序的流程。一条if语句根据Boolean表达式的值标识要运行的语句。 对于单个语句,braces{}是可选的,但建议使用。 该if还可以有一个else条款,将在案件条件的计算结果来执
这里我的代码检测< code>mimeType是否等于某个MIME类型,如果是,它将进行某种转换 我把代码缩短了,因为它有很多else if语句,什么设计模式适合去掉很多if和else或者else if语句?
我正在尝试理解一个java程序,它使用lambda将对象返回到接口的引用变量中。我想将lambda转换为简单的java函数,但不知道如何做到。 程序如下:- 界面如下:- 如何将此程序转换为简单的java程序,而不使用lambda进行学习。请帮忙。
问题内容: 伙计们,我有几个问题: 语句和an 之间在JavaScript中是否存在性能差异? 如果可以,为什么? 是的行为和跨浏览器的不同?(FireFox,IE,Chrome,Opera,Safari) 提出这个问题的原因是,在Firefox中大约有1000多个案例的情况下,我似乎获得了更好的性能。 编辑 Unfortuantly这不是我的代码JavaScript是正在生产服务器端从编译的库,
本文向大家介绍对vue v-if v-else-if v-else 的简单使用详解,包括了对vue v-if v-else-if v-else 的简单使用详解的使用技巧和注意事项,需要的朋友参考一下 首先vue.js请注意 2.1.0版本以上方可使用v-else-if 页面展示如下: vue.js下载:https://github.com/vuejs/vue 以上这篇对vue v-if v-els
我有一个if else语句,它可能会在不久的将来增长。 因为,这看起来已经很乱了,我想如果我能在这里应用任何设计模式会更好。我研究了战略模式,但我不确定这是否会降低其他条件。有什么建议吗?