我正在尝试构建一个 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 位二进制文件。