ChinaUnix.net
相关文章推荐:

汇编函数调用

大家好,在看书的时候有点东西不太懂,所以来请教。 代码如下:void foo(void) { int i=1; } int main() { foo(); return 0; } 反汇编以后不太懂 1,被调用函数中,要先用sub 为局部变量预留空间,而不是用push直接压入栈中,如果i初始化为一个数值的话也是先留好空间再用mov指令放入栈中,而不是push,这主要是出于什么目的?还有这种行为是由编译器决定还是由平台决定的? 还有为局数变量在栈中预...

by 郭德纲 - C/C++ - 2007-09-14 10:29:08 阅读(3198) 回复(11)

相关讨论

这个程序改编自Thinking in C++的Instrument4.cpp,讲的是虚函数,代码如下: #include using namespace std; enum note { middleC, Csharp, Cflat }; // Etc. class Instrument { public: virtual void play(note) const { cout << "Instrument::play" << endl; } virtual char* what() const { return "I...

by kenby - C/C++ - 2009-02-21 16:03:41 阅读(1327) 回复(4)

我是一菜鸟,刚接触到汇编,在观察一个简单的函数调用的反汇编代码的时候对EBP和ESP的变化始终没弄清楚,下面是截取的一小部分代码 --------------------------------------------------------------- 17: int main(){ 00401100 push ebp 00401101 mov ebp,esp 00401103 sub esp,4Ch 00401106 push ebx 00401107 push esi 00401108 push edi 00401109 lea ed...

by selectl - C/C++ - 2008-10-29 13:21:21 阅读(1618) 回复(3)

在一个C语言文件里调用了另外一个用NASM编写的函数, C文件使用以下命令: gcc -c main.c 生成了main.o 目标文件 nasm invoke.asm -f aout 生成了 invoke.o 目标文件 但,使用ld连接的时候出错,请问问题出在那里?谢谢。 gcc -o main invoke.o main.o [ 本帖最后由 Lilov 于 2006-2-23 18:00 编辑 ]

by Lilov - C/C++ - 2006-02-24 13:09:52 阅读(3901) 回复(11)

在C++中调用了一个函数LoadAndClear(),此函数是用汇编写的,看不懂,请哪位高手指点一下: .code #ifndef __32BIT__ .level 2.0W #endif .export LoadAndClear,entry,priv_lev=3,rtnval=gr .proc LoadAndClear .callinfo no_calls .enter addi 15,%arg0,%arg2 #ifndef __32BIT__ depdi 0,63,4,%arg2 #else depi 0,31,4,%arg2 #endif bv (%r2) ldcws,co (%arg2), %ret0 LoadAndClearLoop b LoadAndClearLoop ...

by please - C/C++ - 2006-04-07 10:03:19 阅读(1339) 回复(9)

我想在汇编代码(不是内嵌汇编)中直接调用C函数,比如:调用printf()。 请问是否可以这样做? 谢谢?

by 蓝白725 - C/C++ - 2006-02-14 08:45:53 阅读(2634) 回复(13)

我把sys—chmod的起始处指令改为jmp sqr//sqr为自定义汇编函数 .text .global _sqr _sqr: sub $0x64,%esp // mov 0x68(%esp,1),%eax//这两句为反汇编sys—chmod得到的汇编的前两句,占7个字节 // 0xc0145b77为下一条汇编的地址 jmp *0xc0145b77 // 返回sys—chmod继续执行 目的是:在sys—chmod系统调用中虽然加入了调转,但依然执行了完整的系统调用。可是加载模块后调...

by lrh_0_2000 - 内核/嵌入技术 - 2005-11-09 15:39:44 阅读(198) 回复(0)

我把sys—chmod的前5个字节改为jmp sqr//sqr为自定义汇编实现的函数,sqr如下: //此函数先执行sys—chmod的起始处两条指令(共占7个字节),接着跳转到sys—chmod+7的位置 .text .global sqr sqr: sub $0x64,%esp// mov 0x68(%esp,1),%eax//这两句为通过反汇编sys—chmod得到的汇编的前两句指令,占7个 字节 pushl %eax movl OrgDestFunction,%eax //OrgDestFunction为unsigned long 类型为sys—chmod起始地...

by lrh_0_2000 - C/C++ - 2005-11-08 17:05:09 阅读(561) 回复(0)

1.将函数参数入栈,第一个参数在栈顶,最后一个参数在栈底。 2.执行CALL指令,调用函数,进入该函数代码空间。 a.执行CALL指令,将CALL指令下一行代码的地址入栈。 b.进入函数代码空间后,将基址指针EBP入栈,然后让基址指针EBP指向当前堆栈栈顶,并使用它访问存在堆栈中的函数输入参数及堆栈中的其他数据。 c.堆栈指针ESP减少一个值,如44H,向上移动一个距离,留出一个空间给该函数作为临时存储区。 { // 以上准备工作做好...

by 蓝色键盘 - C/C++ - 2003-06-23 15:14:16 阅读(755) 回复(0)

请问哪里有汇编中断调用的详细资料freebsd的

by vxdpc001 - BSD - 2007-05-18 21:27:24 阅读(789) 回复(2)

在lu程序中调用了display子程序,但是我运行lu时无法调用display 我的调试环境是Cygwin + win2000 谢谢 # # Look someone up in the phone book # name=$1 grep "$name" PHONEBOOK > /matches$$ if [ ! -s /matches$$ ] then echo "I can't find $name in the phone book" else # # Display each of the matching entries # while read line do display "$line" done

by SUN2005 - Shell - 2005-02-24 10:52:01 阅读(582) 回复(2)