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