Article View: be.comp.programming
Article #13060assembler vertalen naar linux system calls
From: Bart Vandewoestyne
Date: Thu, 23 Aug 2001 15:00
Date: Thu, 23 Aug 2001 15:00
173 lines
4735 bytes
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-mailShow 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/)