阅读:2787回复:8
64位驱动如何调用汇编语言
由于64位不支持内嵌式的汇编,那么就必须先把汇编语言写成函数保存在asm文件中,并把该asm文件进行编译成obj再与驱动的C目标文件进行链接,请问用DDK的build命令可以链接么,我怎么总是不成功啊? 一直提示说有个没有解决的引用。请大虾们帮帮小弟。。。
谢谢wowocock。 我把例子打包发上来。 其中的instr_32.asm里面有我要在Drvier.c中调用的汇编函数asm_available,instr_32.asm使用nasm编译的,编译命令是nasm -O2 -DPREFIX -f win32 -o instr_32.obj instr_32.asm。 附件中也有nasm汇编程序:) src.zip |
|
|
沙发#
发布于:2008-11-11 17:02
把你的例子发上来.
|
|
|
板凳#
发布于:2008-11-12 12:31
64位驱动这类问题应该还是比较普遍的吧,驱动里面需要使用到机器指令的情况也很多的。
|
|
|
地板#
发布于:2008-11-13 09:15
引用楼主shenhui于2008-11-11 16:16发表的 64位驱动如何调用汇编语言 : 建议用ML64来编译,先在64位DDK下编译C,然后不用理会错误,再到AMD64目录下运行instr_64.bat即可.注意DDK的路径. |
|
|
地下室#
发布于:2008-11-13 11:50
哦,谢谢wowocock,我先试试
|
|
|
5楼#
发布于:2008-11-13 12:05
wowocock,再请教一个问题。
你的这种方式只能在64位下编译链接,而且写法不太灵活。如何才能在32位下也按这种方式调用汇编函数呢? |
|
|
6楼#
发布于:2008-11-13 12:19
不好意思,呵呵。还有一个小问题,用AMD64编译出来的obj文件中函数名都是和原来一样的,但是用32位的编译器编译出来的obj文件中的函数名怎么都是类似于_DriverEntry@8的呢?能不能自定义呢?
|
|
|
7楼#
发布于:2008-11-15 21:45
在wowocock大虾的帮助下,终于比较圆满的做好了。首先感谢wowocock,然后我再总结一下,下周把整个过程贴出来,呵呵。
|
|
|
8楼#
发布于:2008-11-21 10:46
这个问题比较普遍,欢迎总结.
|
|
|