comp.lang.ada
 help / color / mirror / Atom feed
From: sk <noname@myob.com>
Subject: Re: if X in 1..35000 versus Boolean
Date: Sat, 13 Jul 2002 13:17:57 -0500
Date: 2002-07-13T13:17:57-05:00	[thread overview]
Message-ID: <mailman.1026584402.3884.comp.lang.ada@ada.eu.org> (raw)
In-Reply-To: pan.2002.07.13.19.35.06.942981.1168@gmx.net


Hi,

> I know only basics of Assembler, so this would be pointless in my case.

Pointless ?

---------------------------------------------------
procedure xxx is
begin
    Loop_Name : for i in 1 .. 1000 loop
        null;
    end loop Loop_Name;
end xxx;

---------------------------------------------------
gcc -S -c xxx.adb (Linux, Gnat 3.13p)

---------------------------------------------------
	.file	"xxx.adb"
	.version	"01.01"
gcc2_compiled.:
.text
	.align 4
.globl _ada_xxx
	.type	 _ada_xxx,@function
_ada_xxx:                          -- Set up
	pushl %ebp
	movl %esp,%ebp             <-- Set base to stack 
	subl $4,%esp               <-- Decrement stack 4 bytes for loop
variable
	movl $1,-4(%ebp)           <-- Set loop variable to 1
.L2:
	cmpl $1000,-4(%ebp)        <-- Is the loop variable = 1000 ?
	jle .L5                    <-- No, variable is less than 1000, jump
to .L5
	jmp .L3                    <-- Yes, jump to .L3
	.align 4
.L5:
	jmp .L4                    <-- Jump to .L4
	.align 4
	jmp .L3
	.align 4
.L6:
.L4:
	incl -4(%ebp)              <-- Increment the loop counter
	jmp .L2                    <-- Go to beginning of loop
	.align 4
.L3:
	jmp .L1                    <-- Ok, finished
	.align 4
.L1:                               -- Clean up
	movl %ebp,%esp
	popl %ebp
	ret
.Lfe1:
	.size	 _ada_xxx,.Lfe1-_ada_xxx
	.ident	"GCC: (GNU) 2.8.1"

---------------------------------------------------
Play with the Ada code by changing the "x in 1 .. 1000" to 
"x in 5 .. 57" for example, and look at the resultant 
assembly listing.

-- 
-------------------------------------
-- Merge vertically for real address
-------------------------------------
s n p @ t . o
 k i e k c c m
-------------------------------------



  parent reply	other threads:[~2002-07-13 18:17 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-13 19:10 if X in 1..35000 versus Boolean Jan Prazak
2002-07-13 16:27 ` Frank J. Lhota
2002-07-13 20:36   ` Jan Prazak
2002-07-13 18:05     ` Jeffrey Carter
2002-07-14 15:02       ` Jan Prazak
2002-07-13 22:10     ` Robert Dewar
2002-07-14 21:16       ` Jan Prazak
2002-07-14 20:47         ` Frank J. Lhota
2002-07-15  1:21         ` Jeffrey Carter
2002-07-16  8:18     ` Keith Thompson
2002-07-16 13:54       ` Jan Prazak
2002-07-16 11:13         ` Lutz Donnerhacke
2002-07-17 19:04           ` Jan Prazak
2002-07-17 20:00             ` Georg Bauhaus
2002-07-18  8:11             ` Lutz Donnerhacke
2002-07-18 14:39               ` Georg Bauhaus
2002-07-20  0:37               ` Robert Dewar
2002-07-16 20:25         ` Georg Bauhaus
2002-07-17 19:29           ` Jan Prazak
2002-07-16 19:24       ` Gautier
2002-07-17 19:04         ` Jan Prazak
2002-07-13 16:32 ` David C. Hoos, Sr.
2002-07-13 20:36   ` Jan Prazak
2002-07-13 18:02     ` David C. Hoos, Sr.
2002-07-13 18:17     ` sk [this message]
2002-07-13 20:02       ` Jeffrey Creem
     [not found]     ` <3D306ED5.33E80E09@myob.com>
2002-07-13 18:52       ` David C. Hoos, Sr.
     [not found]       ` <020a01c22a9f$2b50d6c0$6400000a@dhoos>
2002-07-13 19:02         ` sk
2002-07-14 15:02           ` Jan Prazak
2002-07-14 19:25             ` Darren New
2002-07-15 15:22               ` Steffen Huber
2002-07-13 16:44 ` Christopher Browne
2002-07-13 22:09   ` Robert Dewar
2002-07-13 17:17 ` tmoran
2002-07-13 19:44 ` Florian Weimer
  -- strict thread matches above, loose matches on Subject: below --
2002-07-14 20:22 Gautier direct_replies_not_read
2002-07-15 11:36 ` Jan Prazak
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox