* Re: Help ADA and Assembly !!! :-( [not found] <68omkm$orf$1@news2.isdnet.net> @ 1998-01-05 0:00 ` Martin C. Carlisle 1998-01-05 0:00 ` Dmitriy Anisimkov 1 sibling, 0 replies; 4+ messages in thread From: Martin C. Carlisle @ 1998-01-05 0:00 UTC (permalink / raw) In article <68omkm$orf$1@news2.isdnet.net>, jphe <jphe@hol.fr> wrote: >Hi everybody i have a project that compare ada subprocedure and assembly >subprocedure but i can't get in ADA the assembly .obj sub-procedure that i >have made withe TASM could you help me about the use of Pragma import >because i read the doc of Gnat and ADAGIDE but it doesn't recognize my .obj, >i send my little source thanks..... JP ( JPHE@HOL.fr ) > >Exemple is a test of pragma import that must be works with calcul.obj but >doesn't. It says udefinied reference to "calcul" ??? I believe you want something like the following: procedure Test2; pragma Import(Convention => Ada, Entity => Test2, Link_Name => "calcul"); -- use whatever name is in .obj in place of "calcul" -- use Ada's name in place of Test2. pragma Linker_Options("myobjfile.obj"); -- rename myobjfile to your name --Martin -- Martin C. Carlisle, Computer Science, US Air Force Academy mcc@cs.usafa.af.mil, http://www.usafa.af.mil/dfcs/bios/carlisle.html DISCLAIMER: This content in no way reflects the opinions, standard or policy of the US Air Force Academy or the United States Government. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Help ADA and Assembly !!! :-( [not found] <68omkm$orf$1@news2.isdnet.net> 1998-01-05 0:00 ` Help ADA and Assembly !!! :-( Martin C. Carlisle @ 1998-01-05 0:00 ` Dmitriy Anisimkov 1998-01-05 0:00 ` Samuel Tardieu 1 sibling, 1 reply; 4+ messages in thread From: Dmitriy Anisimkov @ 1998-01-05 0:00 UTC (permalink / raw) Hello. > Exemple is a test of pragma import that must be works with calcul.obj but > doesn't. It says udefinied reference to "calcul" ??? Gnat don't understand the *.obj files, but you can write in GNU assembler. GCC compile assembler files *.s and make *.o files. Also you can get assembler source from ADA source by -S compiler option. gcc -S -O2 essaicalc.adb try -O1 without optimization -O2 optimization -O3 strong optimization from ---------essaicalc.ads package essaicalc is Procedure essaicalcul (n1,n2:integer; r1,r2 : out integer); end essaicalc; ---------essaicalc.adb package body essaicalc is Procedure essaicalcul (n1,n2:integer; r1,r2 : out integer) is begin r1 := n1+n2; r2 := n1*n2; end; end essaicalc; I have get assembler code, this is a main fragment : _essaicalc__essaicalcul: .stabn 68,0,2,LM1-_essaicalc__essaicalcul LM1: LBB2: LBE2: pushl %ebp movl %esp,%ebp pushl %ebx movl 8(%ebp),%ebx movl 12(%ebp),%eax movl 16(%ebp),%edx .stabn 68,0,5,LM2-_essaicalc__essaicalcul LM2: movl %eax,%ecx addl %edx,%eax imull %edx,%ecx movl %eax,(%ebx) movl %ecx,4(%ebx) movl %ebx,%eax movl -4(%ebp),%ebx movl %ebp,%esp popl %ebp ret $4 I'm using Gnat 3.10 for Win32. I think you can get same results in GNAT for MSDOS. IMHO Gnat for MSDOS is 32bit compiler, not 16 : > MOV AX,[BP+6] > ADD AX,[BP+8] Best regards, Dimitri Anisimkov. ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Help ADA and Assembly !!! :-( 1998-01-05 0:00 ` Dmitriy Anisimkov @ 1998-01-05 0:00 ` Samuel Tardieu 1998-01-05 0:00 ` Robert Dewar 0 siblings, 1 reply; 4+ messages in thread From: Samuel Tardieu @ 1998-01-05 0:00 UTC (permalink / raw) To: Dmitriy Anisimkov >>>>> "Dmitriy" == Dmitriy Anisimkov <ts@quadrat.omsk.su> writes: Dmitriy> try -O1 without optimization You mean probably -O0. -O1 turns on some optimizations such as putting variables into registers even when the "register" keyword is not present (when compiling C code), it turns on -fthread-jumps and -fdefer-pop, etc. See "man gcc" for details. Sam -- Samuel Tardieu -- sam@ada.eu.org ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Help ADA and Assembly !!! :-( 1998-01-05 0:00 ` Samuel Tardieu @ 1998-01-05 0:00 ` Robert Dewar 0 siblings, 0 replies; 4+ messages in thread From: Robert Dewar @ 1998-01-05 0:00 UTC (permalink / raw) Samuel said <<You mean probably -O0. -O1 turns on some optimizations such as putting variables into registers even when the "register" keyword is not present (when compiling C code), it turns on -fthread-jumps and -fdefer-pop, etc. See "man gcc" for details. >> Indeed, -O1 does substantial optimization, a typical behavior for many programs is that -O1 saves a lot over -O0, but -O2 does not save that much more over -O1. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~1998-01-05 0:00 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <68omkm$orf$1@news2.isdnet.net> 1998-01-05 0:00 ` Help ADA and Assembly !!! :-( Martin C. Carlisle 1998-01-05 0:00 ` Dmitriy Anisimkov 1998-01-05 0:00 ` Samuel Tardieu 1998-01-05 0:00 ` Robert Dewar
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox