www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1993/06/04/08:57:56

To: djgpp AT sun DOT soe DOT clarkson DOT edu
From: "Shaun Courtney" <COURTNEY AT physci DOT uct DOT ac DOT za>
Date: 4 Jun 93 13:42:03 GMT+0200
Subject: Patch for Gzip 1.1.1 match.s
Reply-To: ocean AT ucthpx DOT uct DOT ac DOT za

Hi

With the new version of DJGPP 1.10 ( Great!) the new version of
gzip released today gives errors when compiling the match.s
file.  I think the problem lies with the new version of gas,
but the problem is simple, a few brackets '(' added and it compiles
fine.

Here is a diff -c3 patch.

-----------------------cut here--------------------------------
*** match.old   Fri Jun  4 15:18:52 1993
--- match.s Fri Jun  4 15:16:58 1993
***************
*** 87,97 ****
          mov   _max_chain_length,%ebp /* chain_length =
max_chain_length */
    mov     _strstart,%edi
    mov     %edi,%edx
!   sub $ MAX_DIST,%edx        /* limit = strstart-MAX_DIST */
    jae limit_ok
    sub %edx,%edx              /* limit = NIL */
  limit_ok:
!         add   $ _window+2,%edi       /* edi =
offset(window+strstart+2) */
          mov   _prev_length,%ebx      /* best_len = prev_length */
          movw  -3(%ebx,%edi),%ax      /* ax = scan[best_len-
1..best_len] */
          movw  -2(%edi),%cx           /* cx = scan[0..1] */
--- 87,97 ----
          mov   _max_chain_length,%ebp /* chain_length =
max_chain_length */
    mov     _strstart,%edi
    mov     %edi,%edx
!   sub $ ( MAX_DIST ),%edx        /* limit = strstart-MAX_DIST */
    jae limit_ok
    sub %edx,%edx              /* limit = NIL */
  limit_ok:
!         add   $( _window+2 ),%edi       /* edi =
offset(window+strstart+2) */
          mov   _prev_length,%ebx      /* best_len = prev_length */
          movw  -3(%ebx,%edi),%ax      /* ax = scan[best_len-
1..best_len] */
          movw  -2(%edi),%cx           /* cx = scan[0..1] */
***************
*** 110,116 ****
   * at this point, di == scan+2, si == cur_match,
   * ax = scan[best_len-1..best_len] and cx = scan[0..1]
   */
!         and     $ WSIZE-1, %esi
          movw    _prev(%esi,%esi),%si    /* cur_match =
prev[cur_match] */
                                          /* top word of esi is still
0 */
          cmp     %edx,%esi     /* cur_match <= limit ? */
--- 110,116 ----
   * at this point, di == scan+2, si == cur_match,
   * ax = scan[best_len-1..best_len] and cx = scan[0..1]
   */
!         and     $ (WSIZE-1), %esi
          movw    _prev(%esi,%esi),%si    /* cur_match =
prev[cur_match] */
                                          /* top word of esi is still
0 */
          cmp     %edx,%esi     /* cur_match <= limit ? */
***************
*** 125,131 ****

          lea     _window+2(%esi),%esi    /* si = match */
          mov     %edi,%eax               /* ax = scan+2 */
!         mov   $ MAX_MATCH2,%ecx       /* scan for at most MAX_MATCH
bytes */
          rep;    cmpsw                   /* loop until mismatch */
          je      maxmatch                /* match of length
MAX_MATCH? */
  mismatch:
--- 125,131 ----

          lea     _window+2(%esi),%esi    /* si = match */
          mov     %edi,%eax               /* ax = scan+2 */
!         mov   $ (MAX_MATCH2),%ecx       /* scan for at most
MAX_MATCH bytes */
          rep;    cmpsw                   /* loop until mismatch */
          je      maxmatch                /* match of length
MAX_MATCH? */
  mismatch:
***************
*** 134,140 ****
          xchg    %edi,%eax           /* edi = scan+2, eax = end of
scan */
          sub     %edi,%eax           /* eax = len */
    sub %eax,%esi           /* esi = cur_match + 2 + offset(window) */
!   sub $ _window+2,%esi    /* esi = cur_match */
          subb    $1,%cl              /* set carry if cl == 0 (cannot
use DEC) */
          adc     $0,%eax             /* eax = carry ? len+1 : len */
          cmp     %ebx,%eax           /* len > best_len ? */
--- 134,140 ----
          xchg    %edi,%eax           /* edi = scan+2, eax = end of
scan */
          sub     %edi,%eax           /* eax = len */
    sub %eax,%esi           /* esi = cur_match + 2 + offset(window) */
!   sub $( _window+2),%esi    /* esi = cur_match */
          subb    $1,%cl              /* set carry if cl == 0 (cannot
use DEC) */
          adc     $0,%eax             /* eax = carry ? len+1 : len */
          cmp     %ebx,%eax           /* len > best_len ? */
---------------------------------END----------------------------------

 Shaun Courtney      | INTERNET: courtney AT physci DOT uct DOT ac DOT za
 Oceanography Dept.  |    or     ocean AT ucthpx DOT uct DOT ac DOT za
 Univ. of Cape Town

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019