gpt4 book ai didi

c - Phar Lap 汇编程序 : I Need information/documentation and binaries if possible

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:29 27 4
gpt4 key购买 nike

我已经 inherited一个相当古老的大而复杂的代码库,用于最初针对 MSDOS 的程序。事实证明,这个程序的某些部分是用一种叫做“Phar Lap 汇编程序”的 x86 汇编程序的晦涩方言编写的,以生产汇编程序的公司和产品命名。我进行了相当深入的谷歌搜索,但我找不到原始的汇编程序,也找不到有关它的任何信息或文档。 (虽然我在 Experts Exchange 上发现了一些相当令人沮丧的页面,人们提出了类似的问题)。

所以基本上,在我找到 PharLap 汇编器 (386asm.exe) 的副本,或者找到足够的有关方言的信息以将其翻译成更“标准”的语言之前,我无法编译它MASM 喜欢方言。要么那样,要么尝试通过阅读来弄清楚它。

或者,如果这一切都不可能,那么我只需要一些帮助来解决这个问题,我至少应该能够编译程序的一部分。

.c 文件中有一个结构声明,如下所示:

//static struct bhash *bhash;

typedef struct bhash_control {
void *cachedata;
Rgb3 *ctab;
int rederr;
int grnerr;
int bluerr;
ULONG drgb; // temp var used by dithering, blackbox to us here
#ifdef SHOW_STATS
int calls, hits1, hits2, fhits, misses;
#endif
} BhashCtl;

BhashCtl bhashctl; // global so assembler code can see it.

然后有一些看起来像这样的汇编程序,它大概是在尝试进行相同的类型声明,以便某些汇编程序代码可以使用相同的类型:

BhashCtl struct
cachedata dd ? ; pointer to alloc'd cache data area
ctab dd ? ; contains vb.pencel->cmap->ctab
rederr dd ? ; error diffusion dithering variables...
grnerr dd ?
bluerr dd ?
drgb dd ? ; rgb value with dithering rolled in

;calls dd ? ; cache stats...
;hits1 dd ? ; to use these, you also need to
;hits2 dd ? ; uncomment a few lines below.
;fhits dd ? ; search for 'bhashctl.' to find them.
;misses dd ?

BhashCtl ends

extern bhashctl:BhashCtl ; the one-and-only lives in bhash.c

最后一行编译时出现错误,如下所示(watcom 汇编程序):

Error! E518: External definition different from previous one

所以基本上,我认为这是在说这个结构的汇编版本与这个结构的 C 版本不匹配。我已经在汇编程序中尝试了 WORD 和 DWORD 的多种不同组合来代替 dd,但我无法克服这个小问题。也许如果我能找到一种方法使这两个声明完美匹配,我对有关 pharlap 的信息的需求就会减少。

此外,如果有人能为这个庞大的问题想出更好的标题,我愿意接受想法。

编辑:好的,事实证明我浏览了一些重要信息。这是一个最初为 Phar Lap 汇编器(我没有)编写的文件,我正在尝试使用 watcom assember (wasm) 进行汇编。事实证明,该特定错误的问题在于 Phar Lap 似乎区分大小写,而 watcom 则不区分大小写。所以它将 bhashctl 视为与 BhashCtl 相同。在我姐夫的帮助下解决了这个问题。我从没想过不区分大小写是造成这种情况的原因。

最佳答案

一些 Phar Lap 手册的 ZIP(包括 386|ASM 手册)位于:

http://www.dinigroup.com/pharlap.php

关于c - Phar Lap 汇编程序 : I Need information/documentation and binaries if possible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/764623/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com