之前介绍过,现在的 VS 不支持直接在代码中嵌入汇编,因此需要单独将汇编语句写在独立的 Asm 中然后在编译过程中会 Link 到生成的 EFI 文件中。最近碰到了一个奇怪的问题:明明写好的 Asm 在编译的 Link 过程中会提示无法找到对应的函数。经过研究最终确定是因为Asm 文件的名称导致的。

例如,之前的 “新指令 RDRAND”【参考1】文章中 INF 定义如下

[Sources.IA32]
  IA32/RdRandWord.c
  IA32/AsmRdRand.asm

[Sources.X64]
  X64/RdRandWord.c
  X64/AsmRdRand.asm

如果你手抖,命名成 X64/RdRandWord.asm 就会出现前面提到的问题。并且根据错误提示一直无法确定原因。

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>