7

在尝试使用 mingw 4.4 编译我的项目时,它使用了一些第三方头文件,我遇到了以下错误:

汇编器消息:
错误:行尾有垃圾,第一个无法识别的字符是 '"'
错误:未知伪操作:'.previous'

我在包含的标题之一的末尾找到了这段代码:

__asm__(".section \".plc\"");
__asm__(".previous");

由于我对内联汇编指令完全没有任何经验,所以我用谷歌搜索了它的解释,但找不到我的两个基本问题的答案。究竟做__asm__(".previous");了什么,为什么有人会把它放在头文件的末尾。

这些是__asm__整个项目中唯一的说明。我可以安全地删除它们吗?或者有没有办法定义 .previous 以使其成为已知的伪操作?

请赐教!

4

1 回答 1

6

.previous是一个指令,可让您在两个精灵部分之间来回交换。它是一种允许更密集的程序集文件的快捷方式,例如,您可以在代码流中声明初始化数据,反之亦然。

例如,假设您有一个包含数据和代码部分的汇编文件。

如果你想 - 在函数的中间 - 在数据段中声明一个常量,你可以使用 .previous 语句,如下所示:

  nop            // some code

.previous        // swaps current section (code) with previous section (data)

MyConstant:
  .word 0x0001   // some data

.previous        // swaps curent section (data) with previous section (code)

  nop            // more code

更多信息可以在参考手册中找到:

http://sourceware.org/binutils/docs-2.19/as/Previous.html#Previous

于 2010-03-10T13:04:04.167 回答