Hello World mit bcc 3.1 und tlink
-
schau bitte mal in deinem compilerfaq des bccs nach (habe keinen hier, nur den tclite), wie man ordentlich tiny macht.
im grunde muss es bei den anforderungen so gehen:
DOS versions 3.2 and earlier include an EXE2BIN utility that converts EXE files to COM files. Users who do not have EXE2BIN can use TLINK, the Borland C++ command-line linker, to create a COM file instead of an EXE file. Use the /t option. For example: BCC -mt -lt tiny will create TINY.COM instead of TINY.EXE. The -l switch passes the /t argument to the linker in this case. There are certain limitations in converting an EXE file to a COM file. These limitations are documented in the IBM Disk Operating System manual under EXE2BIN. Borland C++'s TINY model is compatible with the COM format, but programs that use Borland C++'s floating-point routines cannot be used in a TINY model application.
-
die fehlermeldung sagt, du machst kein tiny. irgendwas stimmt hier nicht, entweder du hast doch einen anderen compiler, machst es über die konsole, und nicht dos direkt, oder dein tlink will /t und die reihenfolge meines tlinks..
na ja, weitersuchen ... vielleicht kennt ein anderer deine versionen.
-
user4711 schrieb:
Das anschließende Linken
tlink -t c0s test.obj, test.com,, cs /c:\progra~1\bc\lib
erzeugt weiterhin
"Fatal: Cannot generate COM file : stack segment present"Ich mag mich irren, meine Borland-Zeit ist auch schon ein paar Jahre her, aber c0s ist doch die Standardlibrary für das Small-Modell. Gibts da keine für Tiny, mal geraten: c0t oder so?
-
gute idee, bashar,
---------------------- C0S OBJ - Small model startup code C0T OBJ - Tiny model startup code C0L OBJ - Large model startup code
-
So, jetzt habe ich wenigstens das "Hello-World.com" zum Laufen bekommen:
BCC -mt -lt test.c
tlink -t c0t test.obj, test.com,, cs /c:\bc\libMein ursprüngliches Testprogramm ist aber komplexer und da erhalte ich
mit bcc.exe leider immer noch Fehler (obwohl es mit BC.EXE läuft):Turbo Link Version 5.1 Copyright (c) 1992 Borland International
Fatal: Cannot generate COM file : segment-relocatable items presentLeider kein Hinweis, wo die sein könnten.
-
da steht einiges mehr.
edit: woodooo editiert.
-
-
Die Google-Suche habe ich natürlich auch schon in Erwägung gezogen (bin noch dabei, alles durchzuarbeiten, aber jetzt ist erst mal Wochenende) Dabei finde ich in dos-16.c den lapidaren Hinweis:
'Note: use of 'interrupt' keyword may cause TLINK error
"Cannot generate COM file : segment-relocatable items present" '
(und ich muß 'interrupt' verwenden, weil ich in meinem anderen Thread noch keinen funktionierenden Hinweis fand, wie man es ersetzt; asm push ax usw reicht nicht),
doch keinen Hinweis wie man den Fehler vermeidet.In http://www.vmlinux.org/~jakov/community.borland.com/16623.html finde ich:
“Some of our library functions cannot be called from in the tiny model if one wants a .COM file. “,
Bete jetzt nur, daß “interrupt“ nicht dazu gehört, sonst wird es schwierig...
-
user4711 schrieb:
Dabei finde ich in dos-16.c den lapidaren Hinweis:
'Note: use of 'interrupt' keyword may cause TLINK error
"Cannot generate COM file : segment-relocatable items present" '
(und ich muß 'interrupt' verwenden, weil ich in meinem anderen Thread noch keinen funktionierenden Hinweis fand, wie man es ersetzt; asm push ax usw reicht nicht),
doch keinen Hinweis wie man den Fehler vermeidet.Ich glaube ehrlich gesagt nicht wirklich, dass dieser Hinweis eine Berechtigung hat. Durch welchen Mechanismus soll es da denn zu relozierbaren Adressen kommen?
In http://www.vmlinux.org/~jakov/community.borland.com/16623.html finde ich:
“Some of our library functions cannot be called from in the tiny model if one wants a .COM file. “,
Bete jetzt nur, daß “interrupt“ nicht dazu gehört, sonst wird es schwierig...Nunja, interrupt ist keine Libraryfunktion
. Ich würde an deiner Stelle mal die Anleitung dort drin befolgen, und ein Assembler-Listing erstellen lassen.
-
Bashar schrieb:
user4711 schrieb:
Dabei finde ich in dos-16.c den lapidaren Hinweis:
'Note: use of 'interrupt' keyword may cause TLINK error
"Cannot generate COM file : segment-relocatable items present" '
(und ich muß 'interrupt' verwenden, weil ich in meinem anderen Thread noch keinen funktionierenden Hinweis fand, wie man es ersetzt; asm push ax usw reicht nicht),
doch keinen Hinweis wie man den Fehler vermeidet.Ich glaube ehrlich gesagt nicht wirklich, dass dieser Hinweis eine Berechtigung hat. Durch welchen Mechanismus soll es da denn zu relozierbaren Adressen kommen?
Sag ich doch
Siehe den anderen Thread, weder interrupt noch irgendwelche Libraryfunktionen lösen diesen Fehler aus, es ist eine fehlende "Optimierung" oder Typumwandlung des Compilers, die bei COM-Files nötig wäre, siehe http://www.c-plusplus.net/forum/viewtopic-var-p-is-890439.html#890439