如何在 gnu pascal 中编写内联汇编?

Posted

技术标签:

【中文标题】如何在 gnu pascal 中编写内联汇编?【英文标题】:How to write inline assembly in gnu pascal? 【发布时间】:2009-11-03 02:04:15 【问题描述】:

由于没有官方参考,所以只有一个教程 gpcasm.zip .但是当我尝试遵循 tut 并在我的 debian 上尝试内联汇编示例时。gpc 对此并不满意。

gnu_asm.pas:在程序“MyStupidDelay”中: gnu_asm.pas:3:错误:在重新加载 asm 时找不到类 AREG 中的寄存器

这里是代码

program gnu_asm;
Procedure MyStupidDelay(time : integer);
Begin
 Asm("0 : pushl $0xfffff
   1 : decl(%%esp)
     jnz 1b
    addl $0x4, %%esp
    decl %%eax
    jnz 0b"
    :
    : "a" (time)
    : "eax" );
end;

begin
 write("only for test");
end.

另一个问题,在 gnu pascal 中是否还有其他关于内联汇编的参考、教程、示例。

谢谢。

【问题讨论】:

【参考方案1】:

问题可能不是帕斯卡部分,而是汇编部分。

请参阅this 了解类似问题。

有关更多信息,请在编译选项中说明您的目标机器和信息。

【讨论】:

以上是关于如何在 gnu pascal 中编写内联汇编?的主要内容,如果未能解决你的问题,请参考以下文章

GNU g++ 内联汇编块,如 Apple g++/Visual C++?

如何在 Visual C++ 6.0 中编写以下内联汇编代码?

具有非内联汇编的 Qt C++ 项目

最牛X的GCC 内联汇编

最牛X的GCC 内联汇编

帮助理解 x86 内联汇编中的 DIV 指令