DO * S do U $ nix C životního prostředí

E

efundas

Guest
Mám nějaké C programy, které byly používány v prostředí DOS.Teď chci použít tyto C programy v prostředí Unix.Když jsem je používat JÁ am prospěch úplně jiný výsledek.Můj odhad byl, že data ve formátu, tj. malé indické a velký indický je příčinou špatných výsledků, ale nejsem si jist, může někdo potvrdit.Pokud ano pak je nějaký nástroj, jehož prostřednictvím mohu převést moje DOS C kódu UNIX c kód.

 
Zkontrolujte, zda jsou všechny konstanty jsou typu definovány.Myslím, specifikovat její typ.Například:

# Define some_constant 5L

Také prověřit všechny typy (int, dlouhé, atd.) jsou definovány se stejným počtem bytů v DOS a UNIX překladačů.

Pamatuji si, že v C diskusní Faq se o této otázce velmi dobře comented.Podívejte se na to.

Nicméně, v krajním případě, můžete vždy použít dosemu ...

 
Hlavním problémem nebude endian-ness (pokud váš počítač používá Unix non-intel procesor architektury), ale pouze přechod 16-bit-kódu na 32-bit-kódu."Zpracovatelem" používá na počítačích s DOS, strašný 8086, který se používá k rozdělení paměti na segmenty, každý z nich je 64k do velikosti a jsou téměř stejné jako další, pouze posunuty o 16 byte.
Tak segmentaci adresu 0x1230: 0x0010 je fakticky stejné adrese jako 0x1231: 0x000
nebo 0x122F: 0x0020

Vzhledem k této prdeli-paměť, adresovací schéma, 16-bit 8086 aplikace se některé opravdu podivné věci, které se obtížně port na stroje, které mají "rovně" non-segmentová přístup do paměti.

 

Welcome to EDABoard.com

Sponsor

Back
Top