我已经用汇编语言声明了一个低级的函数,我从包含标准库的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进行了编译

最佳答案

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

关于c - 从C调用汇编函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29517144/

10-11 23:01
查看更多