从C调用汇编函数

时间:2015-04-08 14:11:40

标签: c assembly

我已经用汇编语言声明了一个函数tolower,我从包含标准库的C代码中调用它。我想知道为什么这会正常工作而不会出现任何错误,因为现在存在两个具有相同名称的函数。

我的C代码:

#include <stdio.h>
#include <string.h>

int main() {
char in0[] = "something";
char in1[] = "SomethinG";
char in2[] = "S0mething";

int i = 0;
while (in0[i]) {
  in0[i] = tolower(in0[i]);
  in1[i] = tolower(in1[i]);
  in2[i] = tolower(in2[i]);
  i++;
}
return 0;
}

我无法将汇编代码放在一项任务中。我已全球宣布了tolower功能。

.section .data
.section .text
.globl _start
.globl tolower                                          
.type tolower, @function
tolower:

我使用gcc cfile.c assfile.s

编译

1 个答案:

答案 0 :(得分:0)

您确定要从C代码调用汇编程序版本,而不是标准库版本吗?如何定义汇编代码?它是C项目中的模块(.asm),内联,静态.DLL库还是.DEF / OBJ导入?你在使用什么编译器,汇编器(和IDE,OS?)?目前没有足够的信息可以得出具体的答案,但如果没有什么&#34;定义&#34; C语言的汇编程序函数,以C可以理解的方式,然后它将忽略任何命名冲突。这在技术上也不是错误;相同的功能名称就像在加拿大和欧洲有两个相同的房屋地址(123_Anystreet)。完全可能和允许,但C通常不允许(和汇编程序一样)。