在C语言中调用nasm子过程

在C语言中调用nasm子过程

ID:40803430

大小:32.00 KB

页数:4页

时间:2019-08-07

在C语言中调用nasm子过程_第1页
在C语言中调用nasm子过程_第2页
在C语言中调用nasm子过程_第3页
在C语言中调用nasm子过程_第4页
资源描述:

《在C语言中调用nasm子过程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、在C语言中调用nasm过程,在nasm中调用C运行时库作者:AllenC调用nasm过程GCC的函数原型声明:intf(int)__attribute__((cdecl));可以是cdecl也可以是stdcall,stdcall约定在函数返回前必需将参数出栈,因此不能使用在参数不定的函数调用上,例如scanf和printf_s。VC/BCB的函数原型声明:int__cdeclf(int);C语言代码://gcc–cfilename.c#includeintfact(int)__attribute__((cd

2、ecl));intmain(void){intn,sum;printf("Sumintegersupto:");scanf("%d",&n);sum=fact(n);//,&sum);printf("Sumis%d",sum);return0;}Nasm自过程代码:;nasm–fcofffilename.asmsegment.textglobal_fact_fact:enter0,0moveax,[ebp+8];eax=ncmpeax,1jbeterm_cond;if(n<=1)deceax;n-=1pusheaxcal

3、l_fact;eax=fact(n-1)popecxmuldword[ebp+8];edx:eax=eax*[ebp+8]jmpshortend_factterm_cond:moveax,1end_fact:leaveret将生成的.o文件用GCC连接:gcc–ofilenamecfile.oasmfile.oNasm调用C运行时库函数%ifdefELF_TYPE%define_scanfscanf%define_printfprintf%define_getchargetchar%define_putcharputchar

4、%define_fputsputs%endifextern_scanf,_printf,_getchar,_putchar,_fputssegment.dataformatdb"%d",0segment.textglobal_asm_main_asm_main:enter0,0pushaleaeax,[ebp-16]pusheaxpushdwordformatcall_scanfaddesp,8popaleaveret注:在C中声明的函数在nasm代码中要加单下划线调用,例如scanf预定于为_scanf

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。