`
lingqi1818
  • 浏览: 249271 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

汇编和C相互调用

 
阅读更多
这里有几个原则:
1.调用者需要在调用前声明被调用者。
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;
}

汇编的做法:
extern choose
...
...
push	num2nd
push	num1st
call	choose

2.汇编提供给外部C调用的代码需要在汇编中做全局声明
global myprint

3.调用者需要负责清除堆栈
push	num2nd
push	num1st
call	choose
add	esp, 4
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics