标签: function-calls

过程调用如何在汇编程序中工作?

我刚刚开始修补ASM,我不确定我对程序调用的理解是否正确.

在代码中的某个时刻说有一个过程调用

call dword ptr[123]
Run Code Online (Sandbox Code Playgroud)

并且该过程只包含一个命令,ret:

ret 0004
Run Code Online (Sandbox Code Playgroud)

这个过程调用会产生什么影响,返回值将存储在何处?我在某处读到了一个2字节的返回值将存储在AX中,但当我替换过程调用时

mov AX, 0004
Run Code Online (Sandbox Code Playgroud)

(连同必要的NOP)程序崩溃.

x86 assembly call function-calls

8
推荐指数
1
解决办法
2万
查看次数

javascript函数在没有被调用的情况下运行

我想知道为什么,只要页面加载,btw_bijtellen ()就会调用该函数.我想通过点击来调用它...

var $ = function (id) {
    return document.getElementById (id);
}

function btw_bijtellen () {
    window.alert("we want to calculate something after clicking th button");
}

$("bereken").onclick = btw_bijtellen ();
Run Code Online (Sandbox Code Playgroud)

javascript function-calls

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

ISR和函数调用之间的区别?

我想了解ISR(中断服务程序)和函数调用之间的区别.

从硬件的角度来看,我觉得函数调用和ISR都是一样的.如果我错了,请纠正我.我所能找到的有关ISR和函数调用的内容如下:

ISR:

  • 在程序执行期间可能发生的异步事件

  • 将PC,标志和寄存器保存在堆栈中并禁用所有中断并加载ISR的地址

  • ISR不能有可传递给它的参数

  • 无法返回值
  • 启用中断
  • 通常很小,因为他们正在花时间进行其他一些过程
  • 一些ISR有自己的堆栈

功能:

  • 在有函数调用时发生

  • 将PC和寄存器保存在堆栈中

  • 可以有参数

  • 可以返回值

  • 对执行的大小和持续时间没有限制

除此之外还有什么区别吗?请告诉我.我还读过关于从ISR进行函数调用的方法.请突出显示它.

embedded operating-system function-calls computer-architecture isr

8
推荐指数
1
解决办法
2万
查看次数

为什么python中的函数/方法调用很昂贵?

这篇文章中,Guido van Rossum说功能调用可能很昂贵,但我不明白为什么也不贵.

多少延迟会为您的代码添加一个简单的函数调用,为什么?

python profiling function-calls python-internals

8
推荐指数
3
解决办法
5591
查看次数

将值直接作为数组传递给C中的函数

我有一个函数接受一个整数数组作为参数并打印它.

void printArray(int arr[3])
{
   int i;
   for(i=0; i<3; ++i)
   {
      printf("\n%d", arr[i]);
   }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法像这样传递数组的值

printArray( {3, 4, 5} );
Run Code Online (Sandbox Code Playgroud)

如果我知道前面的值而不必为了将它传递给函数而创建数组

c arrays parameter-passing function-calls compound-literals

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

IE通过函数调用运行得更快?

正在寻找隐藏我的代码的方法,我发生了这个jsPerf测试.除了让我的函数调用缓慢的概念得到重申之外,我没有期待任何其他东西,我在IE 9中的结果真的让我陷入了一个循环.使用函数调用的代码更快,但仅限于这一个浏览器.我运行了多次,结果相同.我看不出测试设置不正确.什么可能导致这个奇怪的结果?

我的用户代理Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0正在Windows Server 2008上运行.

performance function-calls internet-explorer-9

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

围绕功能调用解决方案的混乱

这个问题的灵感来自于这个问题.考虑一下代码:

namespace ns {
  template <typename T>
  void swap(T& a, T& b) {
    using namespace std;
    swap(a, b);
  }
}
Run Code Online (Sandbox Code Playgroud)

在使用GCC进行一些测试后,我发现swap(a, b);解析为
1)std::swap如果T已经过载std::swap(例如,标准容器类型)
2)ns::swap否则,导致无限递归.
因此,似乎编译器将首先尝试在命名空间中找到匹配项ns.如果找到匹配项,则搜索结束.但是当ADL进入时并非如此,在这种情况下,std::swap无论如何都会找到.解决过程似乎很复杂.

我想知道swap(a, b)在上面的上下文中解析函数调用过程中发生了什么的细节.可以参考该标准.

c++ function-calls language-lawyer overload-resolution argument-dependent-lookup

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

PHP:call_user_func_array:通过引用问题传递

当函数包含引用的参数时,以下函数会生成错误,例如:

function test(&$arg, &$arg2)
{
  // some code
}
Run Code Online (Sandbox Code Playgroud)

现在我不能call_user_func_array用于上面的功能,它会产生错误.

如何解决这个问题呢?

我确实需要使用call_user_func_array.

还假设我事先不知道它们是通过引用传递还是通过值传递.

谢谢

php function-calls

6
推荐指数
2
解决办法
8052
查看次数

对于C函数,参数是相反的

我有一个函数,乘以两个矩阵A和B,然后打印结果.以两种类似的方式运行程序时,我得到了两个不同的输出.

第一:

    FILE *f;
    f = fopen("in.txt","r");
    struct Mat* A = read_mat(f);
    struct Mat* B = read_mat(f);
    print_mat(mat_mul_1(A, B));
Run Code Online (Sandbox Code Playgroud)

输出是的确切乘法

A*B.

第二:

    FILE *f;
    f = fopen("in.txt","r");
    print_mat(mat_mul_1(read_mat(f), read_mat(f)));
Run Code Online (Sandbox Code Playgroud)

输出是的确切乘法

B*A.

我想知道为什么争论被颠倒了?!

(因为'mat_mul_1'函数是一个黑盒子)

c reverse arguments function-calls

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

Doxygen使用调用图来记录类中的所有函数?

找出C++类中所有调用的最佳方法是什么?我想不仅找到所有的调用,我想找出根本没有被调用的函数,所以我可以清理我的代码.我听说doxygen在生成调用图时可以创造奇迹,但它似乎只为我的构造函数生成调用图,并且当我有一堆我需要的时候它就像另一个函数一样.

我的所有课程功能都已记录在案.

c++ doxygen function-calls

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