Mail Archives: djgpp/1996/02/13/04:21:43
Xref: | news2.mv.net comp.os.msdos.djgpp:1058
|
From: | Fabrice Frances <frances AT ensica DOT fr>
|
Newsgroups: | comp.os.msdos.djgpp
|
Subject: | Re: masm's coff output
|
Date: | Tue, 06 Feb 1996 17:22:07 +0100
|
Organization: | Ecole Nationale Superieure d'Ingenieurs des Constructions Aeronautiques
|
Lines: | 29
|
Message-ID: | <3117802F.7CBA126D@ensica.fr>
|
References: | <311381ff DOT 355150 AT news>
|
NNTP-Posting-Host: | linuxfly.ensica.fr
|
To: | dave AT davemac DOT demon DOT co DOT uk
|
DJ-Gateway: | from newsgroup comp.os.msdos.djgpp
|
Dave McNeill wrote:
> .386
> .model flat
>
> .code
>
> __go32_conventional_mem_selector proto
> _fill_screen proto
>
> _fill_screen proc
>
> call __go32_conventional_mem_selector
> ...
> _fill_screen():
> 00001528: e8db080000 call __go32_conventional_mem_selector+5
** **
Maybe I'm missing the point (I've not used M$ products for quite a long
time), but it seems the 'proto' keyword generates an additional jmp
to allow both near and far calls to routines. As __go32_conventional_mem_selector
doesn't have such a jmp, the call generated with masm points to 5 bytes
after the real start of the routine... so you shouldn't declare the
external __go32_conventional_mem_selector routine with the 'proto' keyword
Best regards,
--
main(){int i,j,k,l,m,n,p;char
*s="@_DO AT AJQ@AQQ AT OQO@A_Q AT AQQ@AQO@@@@ONN_QDQAQDAAODAOEDAAIDQAQNN_@@@@";for(j=0
;j<16;j++)for(l=0;p=j%8,m=l-7+p,i=m/6,n=j*4+i,k=1<<m%6,l<32-p;l++)putchar(l<7-
p?' ':l==31-p?'\n':s[n]&k?(j==6||!(s[n+4]&k)?'_':' '):k/2&&s[n]&k/2?'/':' ');}
- Raw text -