code objdump: empty calls?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Just disassembled via objdump my code compiled with gcc -O3

(and other options in my makefile:
 -O3 -finline-limit=100000 --param inline-unit-growth=10000 --param
large-function-growth=100000 \
  --param large-function-insns=47000 -march=native -Wall
-Wno-format-security $(GCC_VER_MORE_45_NO_UNUSED_RET) --param
large-stack-frame=65536 \
  --param large-stack-frame-growth=3000 $(explicit_templates)

):
Next part of function :
    static inline double junctionFactor(CbReptationMove<EnsembleType,
Diblock> &Caller)
    {
      int    jctId, jctTypeNew, nExclude,
neighbor[CellList::MaxNeighbor], nNeighbor;
      double trialEnergy;
      Particle *PartJunct;
      //
      if (Caller.endSign == 1)
        jctId = Caller.tailId + Caller.species->blockLength[0];
      else
        jctId = Caller.headId + Caller.species->blockLength[0] - 1;
...
transforms to (it wasn't actually inlined):
Disassembly of section
.text$_ZN22CbReptationMove_HelperI11EnsembleNVT7DiblockE14junctionFactorER15CbReptationMoveIS0_S1_E:

00000000 <__ZN22CbReptationMove_HelperI11EnsembleNVT7DiblockE14junctionFactorER15CbReptationMoveIS0_S1_E>:
   0:	55                   	push   ebp
   1:	b8 fc c0 07 00       	mov    eax,0x7c0fc
   6:	89 e5                	mov    ebp,esp
   8:	57                   	push   edi
   9:	56                   	push   esi
   a:	53                   	push   ebx
   b:	e8 00 00 00 00       	call   10
<__ZN22CbReptationMove_HelperI11EnsembleNVT7DiblockE14junctionFactorER15CbReptationMoveIS0_S1_E+0x10>
  10:	8b 45 08             	mov    eax,DWORD PTR [ebp+0x8]
  13:	8b 90 84 01 00 00    	mov    edx,DWORD PTR [eax+0x184]
  19:	83 fa 01             	cmp    edx,0x1
  1c:	0f 84 9d 04 00 00    	je     4bf
<__ZN22CbReptationMove_HelperI11EnsembleNVT7DiblockE14junctionFactorER15CbReptationMoveIS0_S1_E+0x4bf>
  22:	8b 88 b8 00 00 00    	mov    ecx,DWORD PTR [eax+0xb8]
  28:	89 c6                	mov    esi,eax
  2a:	8b 80 7c 01 00 00    	mov    eax,DWORD PTR [eax+0x17c]
  30:	03 41 78             	add    eax,DWORD PTR [ecx+0x78]
...
So, cmp    edx,0x1 is comparsion for Caller.endSign  and so on. But from where
call
instruction taked? There are many so "left" calls in my disasm. All of
them have same binary signature "e8 00 00 00 00".
Have gcc (GCC) 4.5.3 under cygwin.
-- 
Kind regards,
Sergey Ivanov


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux