首页 \ 问答 \ x64 - 为什么仍然使用'电话'?(x64 - Why still use 'call'?)

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
更新时间:2022-01-14 06:01

最满意答案

我认为将类名改为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.

相关问答

更多
  • 在我没有源代码控制绑定,一个本地简单的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 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 ...
  • 有两个主要问题。 首先是你使用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) ...
  • 看来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); ...
  • 是的,它已经在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 ...
  • 我不明白你为什么要ping整个IPv4地址范围,即ping所有的IPv4地址。 你知道你试图ping 4 294 967 296个地址吗? 该行set %%A.%%B.%%C.%%D = IP是完全错误的。 变量的名称和分配给变量的字符串值位于等号的错误一侧。 并看看为什么在命令行上使用'set var = text'后没有'echo%var%'的字符串输出? 为解释为什么在等号周围不应有空格。 只要在以(以及以匹配结束)开始的命令块内定义或修改变量并且在相同命令块中引用该变量的值,则需要延迟的环境变量扩展 ...

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)