asm和c的相互调用
来源:互联网 发布:网络摄像机远程监控 编辑:程序博客网 时间:2024/04/23 15:07
;*************foo.asm*********************
extern choose ;
[section .data] ;data is here
num1st dd 3 ;data definition
num2nd dd 4
[section .text] ;code is here
global _start ;export _start function
global myprint ;export myprint for print by bar.c
_start:
push dword [num2nd]
push dword [num1st]
call choose ;call choose function in bar.c
add esp, 8
mov ebx,0
mov eax,1
int 0x80 ;soft irq
;void myprint()
myprint:
mov edx,[esp+8] ;len
mov ecx,[esp+4] ;msg
mov ebx,1
mov eax,4
int 0x80;
ret
;*************foo.asm end*********************
//bar.c
void myprint(char* msg,int len);
int choose(int a, int b)
{
if(a>=b)
myprint("the 1st one\n",13);
else
myprint("the 2nd one\n",13);
return 0;
}
//bar.c end
使用下列命令就可以实现相互调用的验证。
;nasm -f elf foo.asm -o foo.o
;gcc -c bar.c -o bar.o
;ld -s foobar.o bar.o -o foobar
;./foobar
具体细节可以从代码中领会。
- asm和c的相互调用
- 一步步写操作系统(三) C语言和asm语言的相互调用
- asm基础——asm函数和c++函数之间的相互调用
- C 和C++ 之间的相互调用
- C++和C的相互调用
- Object-C 和 lua的相互调用
- swift和object-c的相互调用
- c语言和c++的相互调用
- Swift和Objective-C的相互调用
- win7上的c和asm互调用
- C和C++相互调用
- C和C++相互调用
- C和C++相互调用
- OC和C相互调用
- C和C++相互调用
- C和C++相互调用
- C和C++相互调用
- 汇编和C相互调用
- Ubuntu创建桌面启动器的两种方法
- VC判断操作系统
- x264源代码分析
- 遗传算法
- hdoj 4038 Stone(贪心+快速幂)
- asm和c的相互调用
- 几个法则
- v$session中command字段的含义
- C#计算器简单设计
- java正则表达式详解
- FileInputStream/FileOutputStream的应用
- java 中执行list 的remove 方法
- C++第七周【任务2】阅读下面的程序,仔细阅读注释。然后模仿完成求点类中距离的任务。
- 深夜随感,闲扯三家,聊聊互联网通信新时代,发发感慨