x64 - 为什么仍然使用'电话'?(x64 - Why still use 'call'?)
例如最近的Windows二进制文件(win 8.1 x64)和用VC ++'call'指令编译的程序仍然存在。 将返回地址存储到寄存器不是一种更快,更好的方式,就像大多数参数一样,而不是仍然使用堆栈?
我的意思是:
功能:
func: ; do something jmp r8
它的实例:
lea r8, [rip + tmp_1 - tmp_0] ; or rip + 'jmp func' size tmp_0: jmp func tmp_1: ; rest of code
In recent windows binaries for example (win 8.1 x64) and programs compiled with VC++ 'call' instruction are still present. Isn't a faster and better way to store the return address into registers, the same way as most of the arguments instead of still using stack?
What I mean:
Function:
func: ; do something jmp r8
Instance of it:
lea r8, [rip + tmp_1 - tmp_0] ; or rip + 'jmp func' size tmp_0: jmp func tmp_1: ; rest of code
原文:https://stackoverflow.com/questions/27974214
最满意答案
我认为将类名改为myconfig以外的其他东西就可以了。 代码中有一些名为myConfig的类。
I think changing the class name to something other than myconfig will do the trick. Some where in your code there is a class named myConfig.
相关问答
更多-
错误信息的原因是什么?(What's the reason for error message? I am using VS 2010 professional edition)[2023-05-04]
在我没有源代码控制绑定,一个本地简单的WinForms项目加载项目之后,VS2012也发生在我身上。 我所需要做的只是Clean&Rebuild。 之后,问题解决了。 It happened to me with VS2012 as well after loading the project without source control binding, a local simple WinForms project. All I needed to do was Clean & Rebuild. Aft ... -
我认为将类名改为myconfig以外的其他东西就可以了。 代码中有一些名为myConfig的类。 I think changing the class name to something other than myconfig will do the trick. Some where in your code there is a class named myConfig.
-
int *转换不允许int错误的原因是什么?(What's the reason of int* conversion not permitted to int error?)[2022-07-19]
由于声明: int dp [len1] [len2]; dp[i-1,j]是一个数组 ,不是矩阵的一个元素 。 (这里comma operator可能会令人困惑,正如@BartoszKP所解释的那样。) 也许 minimu(dp[i-1,j]+1,dp[i,j-1]+1,dp[i-1][j-1]+k); 应该 minimu(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]+k); // ^ ^ PS请注意int dp[len1][len2 ... -
这个代码在C中没有正常运行的原因是什么?(What is the reason why isn't this code running properly in C? [closed])[2022-09-16]
有两个主要问题。 首先是你使用if(a=0) ,这导致赋值代替if(a==0) 。 其次 for(i=1 ; i<=a ;i++) { b = 1; b *= i; } 这段代码也有问题。 你在每次迭代后使b=1 ,这会覆盖中间结果,从而导致错误的答案。 由于您已在代码中将b初始化为1,因此根本不需要此行。 for(i=1 ; i<=a ;i++) { b *= i; } 另外值得一提的是,你总是会遇到fatal error的原因是因为你在if条件下做了什么。 由于if(a=0) ... -
可能是错误的原因是什么?(What could be the reason for the error? Please see detail showing image of error)[2022-03-04]
看来Apple的服务器本周末可能会遇到问题。 我得到了类似的错误。 您应该检查iTunesConnect以查看二进制文件是否已上传,并可能向ITC支持人员发送电子邮件确认。 It appears that Apple's servers may be having issues this weekend. I got a similar error. You should check iTunesConnect to see if the binary was uploaded, and perhaps s ... -
问题出在这里: memset(&fPD->dir,0,strlen(tmpStr)+1); 以上行应为: memset(fPD->dir,0,strlen(tmpStr)+1); 否则,你不仅fPD->dir 指针归零,还要在它之后立即破坏内存。 一旦你将指针归零,后续的strcpy()进入指向内存的段错误。 事实上,整个memset()行看起来是多余的,因为它紧跟strcpy() 。 The problem is here: memset(&fPD->dir,0,strlen(tmpStr)+1); ...
-
我不能拥有一个名为Category的对象的原因是什么?(What is the reason I cannot have an object named Category? [duplicate])[2022-02-14]
是的,它已经在ObjC运行时中定义。 ///表示类别的opaque类型。 typedef struct objc_category *Category; 您可以通过⌘-点击符号来检查。 Yes, it's already defined in the ObjC runtime. /// An opaque type that represents a category. typedef struct objc_category *Category; You can check this by ⌘-click ... -
与您的问题相关的是,您不应该为每个进程启动一个线程。 QProcess在finished(int code, QProcess::ExitStatus status)发出finished(int code, QProcess::ExitStatus status)信号。 它还将分别在成功和不成功启动时发出started()和error() 。 将所有这三个信号连接到QObject中的插槽,然后启动该过程,并在插槽中处理结果。 您不需要任何额外的线程。 如果您收到一个started()信号,那么您可以确定该进 ...
-
因为他们是运动? 这就像在学校给出的问题。 它们不是现实世界的问题。 他们是应该教给你一些东西的问题。 你的三个例子都很有趣。 已经有太多的程序员在写(坏)代码之前10分钟就无法做到。 这些问题需要你思考。 我要补充说,有各种程序员(包括我在内)喜欢复杂的问题。 复杂的数学+编程问题就像数独,但更好,因为在做了数独之后你还没有学到任何新的东西(你只锻炼了你的大脑),而在做了复杂的问题之后,有时候你学会了一些东西(至少如何使你的代码完全不可读:-))肯定你已经锻炼了你的大脑。 甚至还有一百个问题的网站,比如s ...
-
错误信息的原因是什么(“此时意外?(What is the reason for error message “(” was unexpected at this time?)[2021-11-05]
我不明白你为什么要ping整个IPv4地址范围,即ping所有的IPv4地址。 你知道你试图ping 4 294 967 296个地址吗? 该行set %%A.%%B.%%C.%%D = IP是完全错误的。 变量的名称和分配给变量的字符串值位于等号的错误一侧。 并看看为什么在命令行上使用'set var = text'后没有'echo%var%'的字符串输出? 为解释为什么在等号周围不应有空格。 只要在以(以及以匹配结束)开始的命令块内定义或修改变量并且在相同命令块中引用该变量的值,则需要延迟的环境变量扩展 ...