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

发布于 2024-08-09 23:05:37 字数 659 浏览 5 评论 0原文

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

gnu_asm.pas : In procedure 'MyStupidDelay':
gnu_asm.pas:3: error : can't find a register in class AREG while reloading asm

这是代码

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 中内联汇编的参考、教程、示例。

谢谢。

Since there is not offical reference,I got only one tutorial
gpcasm.zip .But when I try to follow the tut and try the inline assembly example on my debian.The gpc was not happy with it.

gnu_asm.pas : In procedure 'MyStupidDelay':
gnu_asm.pas:3: error : can't find a register in class AREG while reloading asm

Here is the code

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.

Another question,are there any other refernece, tutorials, examples on inline assembly in gnu pascal.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忘东忘西忘不掉你 2024-08-16 23:05:37

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

有关类似问题,请参阅

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

The problem may not be the pascal part but the assembler part.

See this for a similar problem.

For more info pls state your target machine and infos on the compile options.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文