MASM编译器错误:初始化程序的大小对于指定的大小而言太大

时间:2018-06-14 14:12:00

标签: visual-studio-2015 imagemagick jpeg x86-64 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

1 个答案:

答案 0 :(得分:0)

我想出了答案。根据迈克尔上面的评论,这个汇编代码是16位的。

要使这项工作使用64位,需要将其重写为使用64位寄存器。

将16位或32位汇编编译为64位二进制文​​件是不可能的。

但是,如果有C源代码执行相同的工作,那么C代码可以编译到appripriate程序集中,然后编译成32位或64位二进制文​​件。