🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #13060

assembler vertalen naar linux system calls

#13060
From: Bart Vandewoestyne
Date: Thu, 23 Aug 2001 15:00
173 lines
4735 bytes
In een bepaalde .c file die ik probeer te porten van DOS naar windows
komen op een bepaald moment een aantal I/O functie-aanroepen voor die
voor het DOS programma in assembler geschreven zijn:

.RADIX 16
.MODEL SMALL

.486


.CODE

      PUBLIC _inpl

_inpl PROC FAR

      push   bp
      mov    bp,sp

      mov    dx, Word Ptr [bp+6]
      in     EAX,dx

;     bswap  EAX

      push   EAX
      pop    ax
      pop    dx

      mov    sp,bp
      pop    bp
      ret
_inpl ENDP


      PUBLIC _inplI

_inplI PROC FAR

      push   bp
      mov    bp,sp

      mov    dx, Word Ptr [bp+6]
      in     EAX,dx

      push   EAX
      pop    ax
      pop    dx

      mov    sp,bp
      pop    bp
      ret
_inplI ENDP


      PUBLIC _swem

_swem PROC FAR

      push   bp
      mov    bp,sp

      mov    EAX, DWord Ptr [bp+6]

      bswap  EAX

      push   EAX
      pop    ax
      pop    dx

      mov    sp,bp
      pop    bp
      ret
_swem ENDP


      PUBLIC _outpl

_outpl PROC FAR

      push   bp
      mov    bp,sp

      mov    dx, Word Ptr [bp+0ah]
      mov    ax, Word Ptr [bp+8]
      push   ax
      push   dx
      pop    EAX
      mov    dx, Word Ptr [bp+6]
      out    dx,EAX

      mov    sp,bp
      pop    bp
      ret
_outpl ENDP


      PUBLIC _outplI

_outplI PROC FAR

      push   bp
      mov    bp,sp

      mov    dx, Word Ptr [bp+8]
      mov    ax, Word Ptr [bp+0ah]
      push   ax
      push   dx
      pop    EAX
      mov    dx, Word Ptr [bp+6]
      out    dx,EAX

      mov    sp,bp
      pop    bp
      ret
_outplI ENDP

      END


Omdat mijn kennis van assembler nogal beperkt is (zacht uitgedrukt...)
had ik graag geweten of er hier enkele guru's zitten die mij kunnen
zeggen wat de functies inpl, inplI, outpl, outplI en swem juist doen,
en vooral: door welke linux system calls kan ik ze vervangen? (want ik
denk dat dat mogelijk is... het zou me verbazen mocht ik deze
assembler code niet door native linux system calls kunnen
vervangen...)

Ik had gegokt op 'inpl' die staat voor 'input long' en het lijkt me
logisch die dan te vervangen door de linux system call 'inpl', doch
wat moet ik dan bijvoorbeeld aanvangen met die 'inplI'??? 

Ziehier een stukje uit de DOS code waar deze functie-aanroepen
voorkomen:

/* Try to read vendor and device identification: 82420 */

   PCI_Addr.a.regnum    = 0;

   sv  = inplI( CONFADD );
   outplI( CONFADD, PCI_Addr.l );
   vd  = inplI( CONFDATA );

   if( vd == 0x04828086L ) {
     printf( "PCI_EISA configuration detected with 82420EX\n" );
     Enable_BurstDMA( );
   } else {

     outp( CONFADD + 3, 1 );
     for( i = 0; i < 32; i++ ) {
       PCI_Addr.a.devnum = i;

       outplI( CONFADD, PCI_Addr.l );
       vd = inplI( CONFDATA );

       if( vd == 0x04828086L ) {
	 printf( "PCI_EISA configuration detected with 82434\n" );
	 Enable_BurstDMA( ); break;
       }
     }
     outp( CONFADD + 3, 0 );
   }
   outplI( CONFADD, sv );


Alvast bedankt!
mc303

-- 
Ing. Bart Vandewoestyne			 Bart.Vandewoestyne@pandora.be
Hugo Verrieststraat 48			       GSM: +32 (0)478 397 697
B-8550 Zwevegem			 http://users.pandora.be/vandewoestyne
----------------------------------------------------------------------
"Any fool can know, the point is to understand." - Albert Einstein
Technical Details
Message-ID: <3B851A71.B3C1664@pandora.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!193.190.198.17!newsfeeds.belnet.be!naxos.belnet.be!news.belnet.be!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: 1147fd,235beec1da198f21,start
X-Google-Attributes: gid1147fd,public
X-Google-Thread: fcea4,235beec1da198f21,start
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2001-08-23 08:00:17 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!193.190.198.17!newsfeeds.belnet.be!naxos.belnet.be!news.belnet.be!not-for-mail
From: Bart Vandewoestyne <Bart.Vandewoestyne@pandora.be>
Newsgroups: be.comp.programming,kotnet.comp.programmeren
Subject: assembler vertalen naar linux system calls
Date: Thu, 23 Aug 2001 17:00:01 +0200
Organization: MyHome
Lines: 173
Message-ID: <3B851A71.B3C1664@pandora.be>
NNTP-Posting-Host: seven.kulnet.kuleuven.ac.be
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Trace: naxos.belnet.be 998578804 2624 134.58.127.12 (23 Aug 2001 15:00:04 GMT)
X-Complaints-To: abuse@belnet.be
NNTP-Posting-Date: Thu, 23 Aug 2001 15:00:04 +0000 (UTC)
X-Mailer: Mozilla 4.77 [en] (X11; U; Linux 2.4.9 i686)
X-Accept-Language: nl-BE, nl, en, de
Cache-Post-Path: seven.kulnet.kuleuven.ac.be!unknown@kn-10-0-54-080.kotnet.kuleuven.ac.be
X-Cache: nntpcache 2.4.0b5 (see http://www.nntpcache.org/)