Использование memcmp с дальними указателями DOS - PullRequest
0 голосов
/ 19 марта 2019

У меня есть старая программа, которую я написал в 1995 году. Она написана на Borland C и DOS 6.22. Он использует дальнюю модель с данными в разных сегментах. Программа использует память EMS, и поэтому указатели должны быть далеко. Мне нужно использовать memcmp (a, b, c), но я получаю сообщение об ошибке «Warning panel.c 325: Подозрительное преобразование указателя в функции enterPanel», и я подозреваю, что это потому, что у меня есть дальний указатель. Есть ли дальнейшая версия memcpy, которую я должен использовать? (Я искал такую ​​функцию, но не смог ее найти). Вы можете быть удивлены, почему я не просто кодирую цикл, а хочу использовать встроенную возможность, чтобы добиться максимальной скорости.

Вот фрагмент из моего кода:

ASM function
------------
                align   4               
                public  _mainMem
_mainMem        label   dword
mainMem         dd      ?               ;pointer to main memory (if no EMS)

        mov     ax,emsSegment           ;segment of EMS page frame
        mov     word ptr mainMem+2,ax
        mov     word ptr mainMem,0

C program
---------
extern unsigned short _far *mainMem;
short           watchArray[80];
unsigned int    watchAddress, watchLen;

memcmp((_far*)&mainMem[watchAddress], watchArray, watchLen)

Также я попытался удалить (_far *).

...