To: djgpp AT sun DOT soe DOT clarkson DOT edu From: "Shaun Courtney" 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