shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
阅读:2787回复:8

64位驱动如何调用汇编语言

楼主#
更多 发布于:2008-11-11 16:16
由于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
作一名真实,诚实,优秀的科技工作者!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2008-11-11 17:02
把你的例子发上来.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
板凳#
发布于:2008-11-12 12:31
64位驱动这类问题应该还是比较普遍的吧,驱动里面需要使用到机器指令的情况也很多的。
作一名真实,诚实,优秀的科技工作者!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2008-11-13 09:15
引用楼主shenhui于2008-11-11 16:16发表的 64位驱动如何调用汇编语言 :
由于64位不支持内嵌式的汇编,那么就必须先把汇编语言写成函数保存在asm文件中,并把该asm文件进行编译成obj再与驱动的C目标文件进行链接,请问用DDK的build命令可以链接么,我怎么总是不成功啊? 一直提示说有个没有解决的引用。请大虾们帮帮小弟。。。




.......

建议用ML64来编译,先在64位DDK下编译C,然后不用理会错误,再到AMD64目录下运行instr_64.bat即可.注意DDK的路径.
附件名称/大小 下载次数 最后更新
src.zip (47KB)  28 2008-11-13 09:15
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
地下室#
发布于:2008-11-13 11:50
哦,谢谢wowocock,我先试试
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
5楼#
发布于:2008-11-13 12:05
wowocock,再请教一个问题。

你的这种方式只能在64位下编译链接,而且写法不太灵活。如何才能在32位下也按这种方式调用汇编函数呢?
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
6楼#
发布于:2008-11-13 12:19
不好意思,呵呵。还有一个小问题,用AMD64编译出来的obj文件中函数名都是和原来一样的,但是用32位的编译器编译出来的obj文件中的函数名怎么都是类似于_DriverEntry@8的呢?能不能自定义呢?
作一名真实,诚实,优秀的科技工作者!
shenhui
驱动小牛
驱动小牛
  • 注册日期2006-05-11
  • 最后登录2023-02-10
  • 粉丝14
  • 关注11
  • 积分142分
  • 威望1314点
  • 贡献值1点
  • 好评度146点
  • 原创分0分
  • 专家分1分
  • 社区居民
7楼#
发布于:2008-11-15 21:45
在wowocock大虾的帮助下,终于比较圆满的做好了。首先感谢wowocock,然后我再总结一下,下周把整个过程贴出来,呵呵。
作一名真实,诚实,优秀的科技工作者!
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
8楼#
发布于:2008-11-21 10:46
这个问题比较普遍,欢迎总结.
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
游客

返回顶部