From: Hul Tytus on 27 Dec 2009 18:45 comp.arch.embedded Assembly code with Borland's C compiler Anyone have suggestions regarding the form for assembley code files used with Borland's version C compiler? The code below, assembled by masm6, doesn't satisfy the linker (Borland's). The segment names are a guess for the most part - taken from masm6's accrued examples on other projects. "cs:DGROUP" appears off but, if the error is due to segment names, maybe someone here knows suitable names? The code & bat file & error messages are included below. Hul ********************************************************* ; wedtst.asm name SUPP32 ; ??? .386p public _wedtst ; Segments & groups DGROUP group _TEXT _TEXT segment assume cs:DGROUP,ds:DGROUP _wedtst proc ; awk (WORD gdtsize, DWORD flataddr) void public push bp ;save bp mov bp,sp ; -> stack frame mov eax, 66 pop bp ;restore bp ret _wedtst endp _TEXT ends end ******** bat file SET BC55PATH=C:\BOR5 %BC55PATH%\bin\bcc32 -c -tW -a4 -g20 -I.. -I%BC55PATH%\include windil.c > compout.txt rem %BC55PATH%\bin\brc32 -i%BC55PATH%\include windil.rc >> compout.txt %BC55PATH%\bin\ilink32 -L%BC55PATH%\lib -c -aa -Tpe c0w32+windil+wedtst,windil, NULL,import32.lib+cw32.lib,, >> compout.txt type compout.txt | more ******* compout.txt C:\bor5\wed>SET BC55PATH=C:\BOR5 C:\bor5\wed>C:\BOR5\bin\bcc32 -c -tW -a4 -g20 -I.. -IC:\BOR5\include windil.c 1>compout.txt C:\bor5\wed>C:\BOR5\bin\ilink32 -LC:\BOR5\lib -c -aa -Tpe c0w32+windil+wedtst, windil,NULL,import32.lib+cw32.lib,, 1>>compout.txt C:\bor5\wed>type compout.txt | more Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland WINDIL.C: Warning W8057 WINDIL.C 48: Parameter 'hPrevinstance' is never used in function WinMain Warning W8057 WINDIL.C 48: Parameter 'szCmdLine' is never used in function WinMain Warning W8065 WINDIL.C 200: Call to function 'pooi' with no prototype in function WndProc Warning W8065 WINDIL.C 262: Call to function 'iitoaa' with no prototype in function pooi Warning W8070 WINDIL.C 265: Function should return a value in function pooi Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: Unresolved external '_wedtst' referenced from C:\BOR5\WED\WINDIL.OBJ
From: dbr on 27 Dec 2009 18:49 Thanks Rich - those segment names look like an improvement. I'll give them a try. Hul Rich Webb <bbew.ar(a)mapson.nozirev.ten> wrote: > On Sun, 27 Dec 2009 17:23:59 +0000 (UTC), Hul Tytus <ht(a)panix.com> > wrote: > >comp.arch.embedded > >Assembly code with Borland's C compiler > > > > Anyone have suggestions regarding the form for assembley code files used > >with Borland's version C compiler? The code below, assembled by masm6, doesn't > >satisfy the linker (Borland's). > > The segment names are a guess for the most part - taken from masm6's > >accrued examples on other projects. "cs:DGROUP" appears off but, if the error > >is due to segment names, maybe someone here knows suitable names? > > The code & bat file & error messages are included below. > It's been ages since I fiddled with X86 assembly but this might help. > For "Borland C++ 5.5.1" (the version with BCB5), and running > "bcc32 -S hello.c" on > --- > #include <stdio.h> > main() > { > puts("Hello, world!"); > return 0; > } > --- > we get "hello.asm" as > --- > .386p > ifdef ??version > if ??version GT 500H > .mmx > endif > endif > model flat > ifndef ??version > ?debug macro > endm > endif > ?debug S "hello.c" > ?debug T "hello.c" > _TEXT segment dword public use32 'CODE' > _TEXT ends > _DATA segment dword public use32 'DATA' > _DATA ends > _BSS segment dword public use32 'BSS' > _BSS ends > DGROUP group _BSS,_DATA > _TEXT segment dword public use32 'CODE' > _main proc near > ?live1@0: > ; > ; main() > ; > push ebp > mov ebp,esp > ; > ; { > ; puts("Hello, world!"); > ; > @1: > push offset s@ > call _puts > pop ecx > ; > ; return 0; > ; > xor eax,eax > ; > ; } > ; > @3: > @2: > pop ebp > ret > _main endp > _TEXT ends > _DATA segment dword public use32 'DATA' > s@ label byte > ; s@+0: > db "Hello, world!",0 > align 4 > _DATA ends > _TEXT segment dword public use32 'CODE' > _TEXT ends > public _main > extrn _puts:near > ?debug D "C:\Program Files\Borland\CBuilder5\Include\_nfile.h" > 10303 10240 > ?debug D "C:\Program Files\Borland\CBuilder5\Include\_null.h" > 10303 10240 > ?debug D "C:\Program Files\Borland\CBuilder5\Include\_defs.h" > 10303 10240 > ?debug D "C:\Program Files\Borland\CBuilder5\Include\_stddef.h" > 10303 10240 > ?debug D "C:\Program Files\Borland\CBuilder5\Include\stdio.h" > 10303 10240 > ?debug D "hello.c" 14050 28522 > end > --- > -- > Rich Webb Norfolk, VA
From: dbr on 27 Dec 2009 18:54 Jon - as you suggest, mixing Borland & MS object code requires optimism. The error from the linker is at the bottom of the message. Hul Jon Kirwan <jonk(a)infinitefactors.org> wrote: > On Sun, 27 Dec 2009 17:23:59 +0000 (UTC), Hul Tytus <ht(a)panix.com> > wrote: > >comp.arch.embedded > >Assembly code with Borland's C compiler > > > > Anyone have suggestions regarding the form for assembley code files used > >with Borland's version C compiler? The code below, assembled by masm6, doesn't > >satisfy the linker (Borland's). > > The segment names are a guess for the most part - taken from masm6's > >accrued examples on other projects. "cs:DGROUP" appears off but, if the error > >is due to segment names, maybe someone here knows suitable names? > > The code & bat file & error messages are included below. > > > >Hul > I don't have time right now to dig into this. But could you post the > error messages? The exact details of those you are getting? > I gather from the above you are using a Microsoft assembler's output > and linking it together with the output from a Borland c compiler > using the Borland linker. Another thing to keep in mind is that the > records placed in the OBJ file (aside from naming issues you above > suggest) might be somewhat different -- in short, the Borland linker > may not recognize every record in the output of the Microsoft > assembler. Though it may. I just don't know. The error messages may > help to disambiguate here. > Jon
From: dbr on 27 Dec 2009 18:57 I'll give it a try & see what happens. Hul ArarghMail912NOSPAM(a)not.at.arargh.com wrote: > On Sun, 27 Dec 2009 17:23:59 +0000 (UTC), Hul Tytus <ht(a)panix.com> > wrote: > >comp.arch.embedded > >Assembly code with Borland's C compiler > > > > Anyone have suggestions regarding the form for assembley code files used > >with Borland's version C compiler? The code below, assembled by masm6, doesn't > >satisfy the linker (Borland's). > > The segment names are a guess for the most part - taken from masm6's > >accrued examples on other projects. "cs:DGROUP" appears off but, if the error > >is due to segment names, maybe someone here knows suitable names? > > The code & bat file & error messages are included below. > > > >Hul > > > >********************************************************* > >; wedtst.asm > > name SUPP32 ; ??? > > > > .386p > >public _wedtst > > > >; Segments & groups > >DGROUP group _TEXT > > > >_TEXT segment > > assume cs:DGROUP,ds:DGROUP > > > >_wedtst proc ; awk (WORD gdtsize, DWORD flataddr) void public > > push bp ;save bp > > mov bp,sp ; -> stack frame > > mov eax, 66 > > pop bp ;restore bp > > ret > >_wedtst endp > >_TEXT ends > > end > Unless I have missed something, this will generate a 16-bit object, > and it looks like the c code (from below) is 32-bit. That generally > don't work. > Try something more like: > .386 > .model flat > .code > _wedtst proc ; awk (WORD gdtsize, DWORD flataddr) void public > push bp ;save bp > mov bp,sp ; -> stack frame > mov eax, 66 > pop bp ;restore bp > ret > _wedtst endp > end > > > >******** bat file > >SET BC55PATH=C:\BOR5 > > > >%BC55PATH%\bin\bcc32 -c -tW -a4 -g20 -I.. -I%BC55PATH%\include windil.c > > >compout.txt > >rem %BC55PATH%\bin\brc32 -i%BC55PATH%\include windil.rc >> compout.txt > >%BC55PATH%\bin\ilink32 -L%BC55PATH%\lib -c -aa -Tpe c0w32+windil+wedtst,windil, > >NULL,import32.lib+cw32.lib,, >> compout.txt > >type compout.txt | more > > > >******* compout.txt > >C:\bor5\wed>SET BC55PATH=C:\BOR5 > >C:\bor5\wed>C:\BOR5\bin\bcc32 -c -tW -a4 -g20 -I.. -IC:\BOR5\include windil.c > > 1>compout.txt > >C:\bor5\wed>C:\BOR5\bin\ilink32 -LC:\BOR5\lib -c -aa -Tpe c0w32+windil+wedtst, > >windil,NULL,import32.lib+cw32.lib,, 1>>compout.txt > >C:\bor5\wed>type compout.txt | more > >Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland > >WINDIL.C: > >Warning W8057 WINDIL.C 48: Parameter 'hPrevinstance' is never used in function > >WinMain > >Warning W8057 WINDIL.C 48: Parameter 'szCmdLine' is never used in function > >WinMain > >Warning W8065 WINDIL.C 200: Call to function 'pooi' with no prototype in > >function WndProc > >Warning W8065 WINDIL.C 262: Call to function 'iitoaa' with no prototype in > >function pooi > >Warning W8070 WINDIL.C 265: Function should return a value in function pooi > >Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland > >Error: Unresolved external '_wedtst' referenced from C:\BOR5\WED\WINDIL.OBJ > -- > ArarghMail912 at [drop the 'http://www.' from ->] http://www.arargh.com > BCET Basic Compiler Page: http://www.arargh.com/basic/index.html > To reply by email, remove the extra stuff from the reply address.
From: dbr on 27 Dec 2009 18:59 Tim Sounds good - I'll try it. Hul Tim Wescott <tim(a)seemywebsite.com> wrote: > On Sun, 27 Dec 2009 17:23:59 +0000, Hul Tytus wrote: > > comp.arch.embedded > > Assembly code with Borland's C compiler > > > > Anyone have suggestions regarding the form for assembley code files > > used > > with Borland's version C compiler? The code below, assembled by masm6, > > doesn't satisfy the linker (Borland's). > > The segment names are a guess for the most part - taken from masm6's > > accrued examples on other projects. "cs:DGROUP" appears off but, if the > > error is due to segment names, maybe someone here knows suitable names? > > The code & bat file & error messages are included below. > > > -- snip -- > If I'm working with a tool chain that supports compiling to assembly I > cheat. I write a framework file in C and compile to assembly, then find > the insides of the functions and start writing code. > It may not be manly, but it works just fine. > -- > www.wescottdesign.com
|
Next
|
Last
Pages: 1 2 3 4 Prev: Assembly code with Borland's C compiler Next: Assembly code with Borland's C compiler |