I write a func in sqr.s,,then compile it into sqr.o. //extern void sqr(void); int init_module(void) { sqr(); } compile the project ,success,but when insmod the module: error :unresolved symbol sqr!! I don`t know why?
by lrh_0_2000 - 内核/嵌入技术 - 2005-12-08 14:29:34 阅读(897) 回复(5)
在一个C语言文件里调用了另外一个用NASM编写的函数, C文件使用以下命令: gcc -c main.c 生成了main.o 目标文件 nasm invoke.asm -f aout 生成了 invoke.o 目标文件 但,使用ld连接的时候出错,请问问题出在那里?谢谢。 gcc -o main invoke.o main.o [ 本帖最后由 Lilov 于 2006-2-23 18:00 编辑 ]
怎样获取label的所在的地址? 例子: main() { label: printf("abc\n"); goto label; } 我知道怎样使用汇编(内嵌)来实现这个功能,但还没有找到c语法的方法,不管是用标准的c方法,还是编译系统的底层功能。 我猜测_GLOBAL_OFFSET_TABLE_或C_SYMBOL_NAME可能会有,但没有确切的证据。通过反汇编发现goto通常是翻译成jmp一个直接数。
显示如下图形:1 * *** ***** ******* ********* 2 ******* ******** ******** * * * * * * ********
我曾经用汇编写过一个在比较大的内存区域中寻找特定字符串模式的简单代码, 但测试下来令人大失所望,居然它的速度明显比不上PCRE正则表达匹配库的搜索速度!!! 一种可能的解释是,虽然PCRE是用标准的C语言写的,但编绎器懂得产生出执行得更快的代码, 用汇编语言来书写的代码时往往考虑得更多的是代码的可读性,而可读的代码往往就是执行得最慢的!