/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
En C compiler
Fra : Harald


Dato : 24-08-01 21:13

Hej

Jeg skal bruge en Borland C++ compiler fra 1991, ved ikke præcis hvilken
version, men det er efter 2.01 og før 5.5. Den skal kunne generer kode til
en 80188/80186 CPU der kører DOS.

Den kan jo ikke købes længere så jeg håber der måske er en der ligge inde
med sådan en, evt. til salg.

P.S. Håber det er i orden jeg poster det her.

Mvh
HK




 
 
Ivar (24-08-2001)
Kommentar
Fra : Ivar


Dato : 24-08-01 22:27


Harald skrev:

> Jeg skal bruge en Borland C++ compiler fra 1991, ved ikke præcis hvilken
> version, men det er efter 2.01 og før 5.5. Den skal kunne generer kode til
> en 80188/80186 CPU der kører DOS.

Processoren der er i en 80186/80188 er 100% lig en 8086/8088.
Der findes ikke en DOS compiler der er for gammel til 80186/80188.
Du kan måske få problemer med de nyeste. Jeg har en TC 3.0, den
kan generere 8088/8086 kode. Den kan også sættes til at generere
80186/80188 kode, men det er en gang pjat, da koden er 100% lig
8086/8088 kode.
80186/80188 er en 8086/8088 med indbygget timer, uart mm.,
men bemærk at intet er software-kompatibelt med de tilsvarende funktioner
i en PC. Forskellen mellem 8088/80188 og 8086/80186 er bredden på
databussen, som er henholdsvis 8 og 16 bit. Forskellen har kun betydning
for hardware (og preformance) men er "usynlig" for softwaren.

Du kan roligt bruge TC2.01 som Thorbjørn gav link til, du kan
sikkert også bruge den TC5.5 du måske allerede har, den skal blot
sættes til 8088 kode-generering.

Ivar



Thorbjørn Ravn Ander~ (24-08-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 24-08-01 22:38

Ivar wrote:

> kan generere 8088/8086 kode. Den kan også sættes til at generere
> 80186/80188 kode, men det er en gang pjat, da koden er 100% lig
> 8086/8088 kode.

Der er et par enkelte instruktioner ekstra som sjvh primært gik på at
pushe og poppe alle registre i et hug. Jeg arbejdede lidt med 80186
assembler på en RC Piccoline, og undredes dengang.

Jeg er enig i at 8086 kode skulle være ok.
--
Thorbjørn Ravn Andersen "...plus... Tubular Bells!"
http://bigfoot.com/~thunderbear

Byrial Jensen (25-08-2001)
Kommentar
Fra : Byrial Jensen


Dato : 25-08-01 09:00

Thorbjørn Ravn Andersen <thunderbear@bigfoot.com> skrev:
> Ivar wrote:
>
>> kan generere 8088/8086 kode. Den kan også sættes til at generere
>> 80186/80188 kode, men det er en gang pjat, da koden er 100% lig
>> 8086/8088 kode.
>
> Der er et par enkelte instruktioner ekstra som sjvh primært gik på at
> pushe og poppe alle registre i et hug.

Forskellen er mere end et par enkelte instruktioner:

- Der er forskelle i eksekveringshastigheder (clockcycles per
instruktion) som kan påvirke optimal optimering.

- Nye instruktioner i 80186/80188:
INS/OUTS (input/output string)
PUSHI (push immediate)
IMUL (Integer Immediate Mulitiply, signed)
PUSHA/POPA (Push/Pop All)
SHIFT/ROTATE IMMEDIATE
BOUND (Array Bounds)
ENTER (Enter Procedure)
LEAVE (Leave Procedure)

- Nye traps:
Unused Opcode
Escape Opcode

> Jeg er enig i at 8086 kode skulle være ok.

8086-kode kan bruges, men 80186-kode er klart bedre.

Kilde: Intel iAPX 86/88, 186/188 User's Manual, Programmer's
Reference, 1986

Thorbjørn Ravn Ander~ (25-08-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 25-08-01 09:02

Byrial Jensen wrote:


> 8086-kode kan bruges, men 80186-kode er klart bedre.

Hvis ovenstående instruktioner ikke findes i en moderne Pentium, er det da
uhensigtsmæssigt at bruge dem, da man så ikke kan fejlfinde på andet end
slutmaskinen.

Tak for oversigten. Det giver mere mening i dag end det gjorde for 12 år
siden.

--
Thorbjørn Ravn Andersen "...plus... Tubular Bells!"
http://bigfoot.com/~thunderbear

Ivar (25-08-2001)
Kommentar
Fra : Ivar


Dato : 25-08-01 13:18


Byrial Jensen skrev:

> - Nye instruktioner i 80186/80188:
> INS/OUTS (input/output string)
> PUSHI (push immediate)
> IMUL (Integer Immediate Mulitiply, signed)
> PUSHA/POPA (Push/Pop All)
> SHIFT/ROTATE IMMEDIATE
> BOUND (Array Bounds)
> ENTER (Enter Procedure)
> LEAVE (Leave Procedure)

Ups, der var jeg nok lidt for hurtigt ude. Jeg kender ikke meget til
8086/80386 programmering, men disse instruktioner ser meget
"compiler-venlige" ud, så jeg vil tro at de også findes i Pentium.

Ivar



Harald (25-08-2001)
Kommentar
Fra : Harald


Dato : 25-08-01 01:21

"Ivar" <did@vip.[nozpam]cybercity.dk> skrev i en meddelelse
news:9m6gub$13ee$1@news.cybercity.dk...
>
> Harald skrev:
>
> > Jeg skal bruge en Borland C++ compiler fra 1991, ved ikke præcis hvilken
> > version, men det er efter 2.01 og før 5.5. Den skal kunne generer kode
til
> > en 80188/80186 CPU der kører DOS.
>
> Processoren der er i en 80186/80188 er 100% lig en 8086/8088.
> Der findes ikke en DOS compiler der er for gammel til 80186/80188.
> Du kan måske få problemer med de nyeste. Jeg har en TC 3.0, den
> kan generere 8088/8086 kode. Den kan også sættes til at generere
> 80186/80188 kode, men det er en gang pjat, da koden er 100% lig
> 8086/8088 kode.
> 80186/80188 er en 8086/8088 med indbygget timer, uart mm.,
> men bemærk at intet er software-kompatibelt med de tilsvarende funktioner
> i en PC. Forskellen mellem 8088/80188 og 8086/80186 er bredden på
> databussen, som er henholdsvis 8 og 16 bit. Forskellen har kun betydning
> for hardware (og preformance) men er "usynlig" for softwaren.
>
> Du kan roligt bruge TC2.01 som Thorbjørn gav link til, du kan
> sikkert også bruge den TC5.5 du måske allerede har, den skal blot
> sættes til 8088 kode-generering.

Jeg har TC2.01 men der er noget kode som den ikke understøtter, jeg går ud
fra det er fordi den er for gammel. Jeg har også TC5.5 men den kan jo ikke
generere kode til CPU´er før 80386 så vidt jeg kan se ud fra de parameter
muligheder der er.

Mvh
HK




Harald (25-08-2001)
Kommentar
Fra : Harald


Dato : 25-08-01 12:18

"Ivar" <did@vip.[nozpam]cybercity.dk> skrev i en meddelelse
news:9m6gub$13ee$1@news.cybercity.dk...
>
> Harald skrev:
>
> > Jeg skal bruge en Borland C++ compiler fra 1991, ved ikke præcis hvilken
> > version, men det er efter 2.01 og før 5.5. Den skal kunne generer kode
til
> > en 80188/80186 CPU der kører DOS.
>
> Processoren der er i en 80186/80188 er 100% lig en 8086/8088.
> Der findes ikke en DOS compiler der er for gammel til 80186/80188.
> Du kan måske få problemer med de nyeste. Jeg har en TC 3.0, den
> kan generere 8088/8086 kode. Den kan også sættes til at generere
> 80186/80188 kode, men det er en gang pjat, da koden er 100% lig
> 8086/8088 kode.
> 80186/80188 er en 8086/8088 med indbygget timer, uart mm.,
> men bemærk at intet er software-kompatibelt med de tilsvarende funktioner
> i en PC. Forskellen mellem 8088/80188 og 8086/80186 er bredden på
> databussen, som er henholdsvis 8 og 16 bit. Forskellen har kun betydning
> for hardware (og preformance) men er "usynlig" for softwaren.
>
> Du kan roligt bruge TC2.01 som Thorbjørn gav link til, du kan
> sikkert også bruge den TC5.5 du måske allerede har, den skal blot
> sættes til 8088 kode-generering.

Hej

I koden har jeg disse linier:
_asm cli
-ting og sager-
_asm

ved de 2 _asm linier for jeg følgende fejl: "Undefined symbol ' _asm' in
function"

Hvis jeg retter _asm til asm for jeg følgende fejl: "In-line assembly not
allowed in function"

Jeg ved at koden er blevet kompileret på en Borland C++ compiler (jeg har
EXE filen) så det må være fordi 2.01 er en for gammel version, eller hvad?

Mvh
HK




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste