首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Phar Lap汇编程序:如果可能,我需要信息/文档和二进制文件

Phar Lap汇编程序:如果可能,我需要信息/文档和二进制文件
EN

Stack Overflow用户
提问于 2009-04-19 01:27:06
回答 2查看 833关注 0票数 1

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

所以基本上,除非我找到一份MASM汇编程序(386asm.exe)的副本,或者找到足够的关于方言的信息,以便将其翻译成更“标准”的PharLap方言,否则我无法编译这件事。要么这样,要么试着通过阅读来弄清楚。

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

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

代码语言:javascript
运行
复制
//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.

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

代码语言:javascript
运行
复制
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 assembler):

代码语言:javascript
运行
复制
Error! E518: External definition different from previous one

所以基本上,我认为这意味着这个结构的汇编版本与C语言版本的结构不匹配。我在汇编程序中尝试了许多不同的WORD和DWORD组合来代替dd,但是我就是不能通过这个小东西。也许如果我能找到一种方法让这两个声明完美匹配,我对pharlap信息的需求就会减少。

此外,如果有人能想出一个更好的标题来解决这个杂乱无章的问题,我对此持开放态度。

编辑:好的,我浏览了一些重要的信息。这是一个最初为Phar Lap汇编程序(我没有)编写的文件,我正尝试使用watcom assember (wasm)来汇编它。这个特殊错误的问题是,Phar Lap似乎区分大小写,而watcom不区分大小写,所以它将BhashCtl视为与bhashctl相同。在我小叔子的帮助下解决了这个问题。我从来没有想过大小写不敏感是导致这种情况的原因。

EN

Stack Overflow用户

发布于 2009-04-19 02:24:56

这可能不是您需要的答案,但我会尝试:将汇编部分移植到C中有多难?我知道有一些C不能做的事情,但也许你可以使用内联汇编来完成它。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/764623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档