我想编写一个函数,它可以执行以下操作:
def addme(x, y):
return x + y
我知道已经有了这样的说明,但我正在练习如何在函数中传递args。传递args的正确方法是什么?我见过类似的东西:
# addme(5,2)
push $2
push $5
call addme
add $16, %rsp
这是传递args的正确方法吗,以相反的顺序将它们推送到堆栈
,然后在执行函数调用后重置堆栈指针?我还听说参数在%rdi、%rsi、...
中传递。一个正确,另一个不正确,或者正确的方法是什么?
这是通过args的正确方法吗...
这取决于调用约定:
对于 64 位 x86 Windows 程序,参数在寄存器 rcx
、rdx
、r8
和 r9
中传递。
对于64位x86 Linux程序,使用寄存器<code>rdi、<code>rsi、<code>rcx、<code>rdx,<code>r8和<code>r9。
但是,特别是在16位DOS和Windows中,以及在32位Windows中,混合不同的调用约定是很常见的。
这在64位Windows或Linux中仍然可能:
如果您编写自己的编译器或完全用汇编语言编写程序,您可以决定对某些函数使用不同的调用约定-例如,如果函数名以<code>onstk_
如果我对你的例子理解正确的话,你用的不是C或C而是Python之类的某种语言。
我知道有些编程语言(如Java或Matlab;我不知道Python)在调用“本机”(编译或汇编)代码时使用完全不同的调用约定。所以也许你必须用完全不同的方式来传递参数。
我目前正在读一本关于x86_64 arch的汇编的书。我使用的是extern“c”,因此我从cpp调用程序集。这家伙正在visual studio中编码,他说cpp正在eax、edx、R8D和R9D寄存器中加载函数的参数。这就是我正在研究的功能 我的问题是:我可以假设cpp加载这些寄存器中的参数吗?他正在使用MASM,我认为这是针对Windows的(到目前为止,我已经使用过NASM,我在Mac上以
我正在尝试将参数传递给作为参数传递的函数指针。 代码: 我得到了这个错误: 类型"void"的参数与类型"void(*)(wchar_t*,wchar_t*)"的参数不兼容 如何解决此问题以完成我想要实现的目标? 编辑:对不起,不清楚。我实际上试图完成的是将函数注入子进程并传递两个参数(wchar_t*、wchar_t*),以便我可以使用它们。但主函数可以是void或int argc、char**
问题内容: 在flask中,我可以这样做: 并且如果foo.html包含,页面将会显示。但是,如果有一条通往foo的路线怎么办: 在这种情况下,如果我仍然希望这种逻辑发生,那么进入foo.html的唯一方法是通过: 因此,如何使该变量传递到路由,这样我不必在加载路由之前重写重写该路由计算的逻辑代码? 问题答案: 你可以将消息作为显式URL参数传递(正确编码),也可以在重定向之前将消息存储到(coo
清单2.4中,向std::thread构造函数中的可调用对象,或函数传递一个参数很简单。需要注意的是,默认参数要拷贝到线程独立内存中,即使参数是引用的形式,也可以在新线程中进行访问。再来看一个例子: void f(int i, std::string const& s); std::thread t(f, 3, "hello"); 代码创建了一个调用f(3, "hello")的线程。注意,函数f需
陈述 我想去 但是显然没有使用...因为它不是切肉刀,我想了解更多关于函数及其传递参数的方式。 所以我尝试附加一个使用map函数列表的所有元素。但在此之前,是一个方法,而不是一个方法。 最后一个映射函数返回TypeError: 我想知道是否可以将参数传递给使用的方法。感谢
我有一个类来注册和执行我的自定义endpoint。 如果我在类之外注册我的endpoint,我可以在回调函数中获取我的endpoint的参数。但是在类内部,参数不会传递 代码如下: 以下是我运行此终结点时得到的内容 知道为什么吗?