MASM 编译器错误:初始值设定项幅度对于指定大小来说太大



我正在尝试构建一个 64 位静态 C 库,它与 64 位 C 运行时库动态链接。

C 库在一个无法生成的文件中包含一些程序集。 下面是代码:

JMEMDOSA_TXT segment byte public 'CODE'
assume cs:JMEMDOSA_TXT
public _jdos_open
public _jdos_close
public _jdos_seek
public _jdos_read
...

我得到的编译器错误是:

A2071:初始值设定项幅度对于指定大小来说太大

以下是完整 asm 源文件的链接: https://github.com/cloudflare/jpegtran/blob/master/jmemdosa.asm

我想出了答案。 此汇编代码是 16 位的,基于 Michael 上面的注释。

要使它适用于 64 位,需要重写它以使用 64 位寄存器。

不可能将16 位或 32 位程序集编译为 64 位二进制文件。

但是,如果有 C 源代码执行相同的工作,则可以将 C 代码编译到适当的程序集中,然后编译为 32 位或 64 位二进制文件。

相关内容

  • 没有找到相关文章

最新更新