16 Bit Programm kompilieren
-
ich hab jetzt bei gcc was gefunden:
-b <machine>
damit kann man einstellen für welchen Prozessor das ganze kompiliert werden soll
als Beispiel steht aber nur arm-elf dran
wie sag ich ihm jetzt dass das ein 16-Bit Prozessor ist?
-
such mal in der FAq nach den links fürs OS proggen irgendwo wird eins in C mit dem GCC und dem LD geproggt ansonstenm guck dir mal den 16-bit port DJGPP an..
www.delorie.com/djgpp..glaub ich jedefallsMfg SHade37337
p.s. der Gcc is im netz verdammt gut dokumentiert... alsoi mal Googeln oder in den wikis der GNU/FSF/SF.net usw schauen...
-
gcc kann ja gar kein 16 bit kompilieren also fällt der mal sowiso raus
und in diesen ganzen C Kernel FAQs gehts nur darum mit Assembler in den 32 Bit Modus (Protected Mode) zu schalten um dann den C Kernel zu startenDJGPP hab ich, aber wi soll man mit dem 16 Bit kompilieren?
der benutzt ja auch gcc
-
ich würd nen alten borlander nehmen
turbo c o.ä.
-
watcom
oder digital mars
z.b.:entwickeln unter win32 - compilieren für win16, win32, os2 und weiterenur 16bit pacific c, borland museum turbo c 2.0 und cpp 1.0
dann gibt es noch schulversionen im netz turbo c++ 3.0 oder 3.1
mfg f.-th.
-
watcom hab ich hier grade
das dumme ist das Ding spuckt nur .obj Dateien aus
die ich dann aber mit ld linken müsste
(ich brauch ein bestimmtes format das nur ld hat "flat format binary" oder so)aber ld nimmt meine .obj Dateien nicht (die werden auch nicht unterstützt)
kann man die vielleicht umwandeln?turbo c hatte ich schon, muss nochmal nachgucken was da schief gelaufen is
aber wegen irgendwas ging der auch nich
-
ich hab jetzt alle möglichen Compiler ausprobiert
turbo c, watcom, usw.die Dinger produzieren alle .obj Dateien
aber die nimmt ld nichtkann man ld irgendwie dazu bringen die zu nehmen?
irgendwie umwandeln oder so?ld ist leider der einzige Linker der "flat format binary" erzeugen kann
und das brauch ich
-
ich hab jetzt noch nen Linker gefunden, der "flat format binary" erzeugen kann:
JLocallerdings ist die downloadseite schon lange down
hat den vielleicht jemand? => PN
-
wie wars mit GNU GCC als compiler??
GNU AS86 und ich glaub Nasm produziert auch akzeptable objectdatein in flat**binaries...Mfg Shade37337
-
hast du mal gelesen was ich geschrieben hab?
gcc unterstützt keine 16 Bit
und nasm hat keinen Linker, also was bringt mir das für C?weiß jetzt sogar das Problem
ld untersützt keine 16 Bit, ich dachte das wär beim Linker egal isses aber nich
-
versuch mal sowas.. bei debian gefunden
http://dir.filewatcher.com/d/Debian/i386/devel/bcc_0.16.0-2_i386.deb.100408.htmlso, hier der link
http://homepage.ntlworld.com/robert.debath/dev86/Dev86src-0.16.17.tar.gz
-
Ich hab jetzt endlich eine Möglichkeit gefunden mit gcc 16 Bit Code zu erzeugen:
http://www.tldp.org/HOWTO/Assembly-HOWTO/gas.htmlBinutils (2.9.1.0.25+) now fully support 16-bit mode (registers and addressing) on i386 PCs. Use .code16 and .code32 to switch between assembly modes.
Also, a neat trick used by several people (including the oskit authors) is to force GCC to produce code for 16-bit real mode, using an inline assembly statement asm(".code16\n"). GCC will still emit only 32-bit addressing modes, but GAS will insert proper 32-bit prefixes for them.
allerdings macht gcc da nicht mit, ich hab versucht folgenden Quellcode zu kompilieren:
__asm__ (".code 16\n"); int main() { }
aber ich bekom immer die gleiche Fehlermeldung:
Assembler messages:
Error: unknown pseudo-op: `.code'Ich dachte ich könnte jetzt endlich 16 Bit Code machen und dann will das Ding nich
EDIT:
okay hat sich erledigt
es muss__asm__ (".code16\n");
und nicht
__asm__ (".code 16\n");
heißen