<div dir="ltr"><div>Thanks again. Unfortunately I think that even "only AST" will be to much for my RAM.</div><div><br></div><div>I have one more idea, please tell me if this makes any sense. I'm thinking about storing class specializations in term of scopes. </div><div>(It don't want this to work with every C++ project, I'm ok with that it'll work only with my project)</div><div>(And I'd stick to couple of assumptions during ctai implementation, e.g. only one depth scope resolution, A::B)</div><div>(I'm aware that probably I'd need to write my own implementation of ClassTemplateSpecializationDecl and couple of more classes)</div><div><br></div><div>Example code and the flow:</div><div><br></div><div>template <int N></div><div>struct N_Holder</div><div>{</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">       </span>static constexpr int N_Value = N;</div><div>};</div><div><br></div><div>template <int Val1, int Val2></div><div>struct Add_impl</div><div>{</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">    </span>using Val1_Holder = Holder<Val1>;</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span>using Val2_Holder = Holder<Val2>;</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">        </span></div><div><span class="gmail-Apple-tab-span" style="white-space:pre">       </span>static constexpr int Result_impl = Val1_Holder::N_Value + Val2_Holder::N_Value;</div><div>};</div><div><br></div><div>template <int Val1, int Val2></div><div>struct Add</div><div>{</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">   </span>static constexpr int Result = Add_impl<Val1, Val2>::Result_impl;</div><div>};</div><div><br></div><div>struct A_Struct</div><div>{</div><div><span class="gmail-Apple-tab-span" style="white-space:pre"> </span>static constexpr int Value = Add<10, 20>::Result;</div><div>};</div><div><br></div><div><br></div><div><br></div><div>Flow:</div><div><br></div><div>(...)</div><div>-see class A_Struct</div><div>-go into A_Struct scope</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">   </span>-see a member Value = </div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                </span>-create class Add<10, 20> specialization</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">         </span>-go into Add<10, 20> scope</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                       </span>-see parameters {non-type 10, non-type 20}</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                     </span>-see member Result = </div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                         </span>-create Add_impl<parameters[0], parameters[1]> specialization</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                            </span>-go into Add_impl<10, 20> scope</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                  </span>-see parameters {non-type 10, non-type 20}</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                     </span>-see alias Val1_Holder = </div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                             </span>-create Holder<parameters[0]> specialization</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                             </span>-go into Holder<10> scope</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                                        </span>-see parameters {non-type 10}</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                                  </span>-see member N_Value = parameters[0]</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                            </span>-go out of Holder<10> scope (nothing do delete)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                          </span>-assign Val1_Holder = Holder<10> specialization 'by value':</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                                      </span>{</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                                              </span>aliases {}</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                                             </span>members { N_Value = 10 }</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                                       </span>}</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                              </span>-delete Holder<10> specialization</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                        </span>-see alias Val2_Holder = </div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                             </span>-create Holder<parameters[1]> specialization</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                             </span>-go into Holder<20> scope</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                                        </span>-see parameters {non-type 20}</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                                  </span>-see member N_Value = parameters[0]</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                            </span>-go out of Holder<20> scope (nothing do delete)</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                          </span>-assign Val2_Holder = Holder<20> specialization 'by value':</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                                      </span>{</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                                              </span>aliases {}</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                                             </span>members { N_Value = 20 }</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                                       </span>}</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                              </span>-delete Holder<20> specialization</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                                        </span>-see member Result_impl = Val1_Holder::N_value + Val2_Holder::N_Value;</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                         </span>-go out of Add_impl<10, 20> scope: </div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                     </span>-assign Result = Add_impl<10, 20>::Result_impl</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">                   </span>-delete Add_impl<10, 20> specialization</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">          </span>-go out of Add<10, 20> specialization</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">    </span>-assign Value = Add<10, 20>::Result</div><div><span class="gmail-Apple-tab-span" style="white-space:pre">      </span>-delete Add<10, 20> specialization</div><div>-go out of A_Struct scope</div><div>(...)</div><div><br></div><div><br></div><div>Thanks,</div><div>Stryku</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-04-30 23:00 GMT+02:00 mats petersson <span dir="ltr"><<a href="mailto:mats@planetcatfish.com" target="_blank">mats@planetcatfish.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Like I said, you need those types for most of the compilation process. It's REALLY hard to keep track of when these things don't matter any longer - you certainly need types that actually generate code all the way to LLVM-IR generation. That's for the AST types. IR types, which isn't quite the same thing.<div><br></div><div>The latter, you can do by doing "syntax-only" run on the compiler - it won't generate any LLVM-IR, so memory usage here is "only" AST. Also, prodcuing LLVM-IR output from the compiler (-S -emit-llvm) and then using `llc` to compile the IR to machine code, to determine memory usage of the IR types (obviously with other things).<br><br>[In my compiler project, I decided it's so hard to track what is needed again and what isn't, and decided to NOT free any memory for that reason - of course, not a particularly great strategy if you want to run it as a library in something else, but if I really had to, I could probably stick every object in one or more container(s) and free it all at the end]</div><div><br></div><div>--</div><div>Mats</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On 30 April 2017 at 21:12, mateusz janek <span dir="ltr"><<a href="mailto:stryku2393@gmail.com" target="_blank">stryku2393@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Sorry for no response, I was quite busy.<div><br></div><div>Thanks Brian for help with the build (: Also I've tried with the g++-6 and it has same problem with the memory usage.<br><div><br></div><div>The problem here is caused by creating a lot of template class specializations. As Mats partially said and I found in the llvm sources here: <a href="https://github.com/stryku/llvm/blob/master/include/llvm/IR/Type.h#L42" target="_blank">https://github.com/stryku/llvm<wbr>/blob/master/include/llvm/IR/<wbr>Type.h#L42</a> types are stored till the end of program life. AFAIU every class specialization is a separate type.</div></div><div><br></div><div>Simpler program that shows my problem is e.g. <a href="https://gist.github.com/stryku/986bcd6a5d5773ef0e0136a5eca97e20" target="_blank">https://gist.github.com/s<wbr>tryku/986bcd6a5d5773ef0e0136a5<wbr>eca97e20</a></div><div>There is a lot of specializations of <span style="color:rgb(121,93,163);font-family:sfmono-regular,consolas,"liberation mono",menlo,courier,monospace;font-size:12px;white-space:pre-wrap">values_container</span>, <span style="color:rgb(36,41,46);font-family:sfmono-regular,consolas,"liberation mono",menlo,courier,monospace;font-size:12px;white-space:pre-wrap">create_co<wbr>ntainer</span>, <span style="color:rgb(121,93,163);font-family:sfmono-regular,consolas,"liberation mono",menlo,courier,monospace;font-size:12px;white-space:pre-wrap">create_impl etc</span>. Additionally every values_container have a lot of template parameters which in fact are also types (built-in types, but still).</div><div><br></div><div>For now, I'm playing with llvm and clang sources to understand what's going on there and I'll probably try to implement my own mechanism of storing a template class specializations.</div><div><br></div><div>Thanks for your interest,</div><div>Stryku</div><div><div class="m_8934931187510100186h5"><div><br></div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote">2017-04-29 0:02 GMT+02:00 Brian Cain <span dir="ltr"><<a href="mailto:brian.cain@gmail.com" target="_blank">brian.cain@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto"><div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote"><span>On Fri, Apr 28, 2017 at 6:11 AM, mateusz janek <span dir="ltr"><<a href="mailto:stryku2393@gmail.com" target="_blank">stryku2393@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Did you use CMake? If no, ctai requres clang 4.0 and to be compiled with flags: `<span style="color:rgb(36,41,46);font-family:sfmono-regular,consolas,"liberation mono",menlo,courier,monospace;font-size:12px;white-space:pre-wrap">-std=c++1z -ftemplate-backtrace-limit=0 -ftemplate-depth=8096`</span><div><span style="color:rgb(36,41,46);font-family:sfmono-regular,consolas,"liberation mono",menlo,courier,monospace;font-size:12px;white-space:pre-wrap"></span></div></div><div dir="ltr"><span style="color:rgb(36,41,46);font-family:sfmono-regular,consolas,"liberation mono",menlo,courier,monospace;font-size:12px;white-space:pre-wrap"><br></span></div></blockquote><div><br></div></span><div>I got it to work with some tweaks to the CMake config.  It ran quickly for me, but it did allocate a decent amount of memory on the way.  Also I used a nightly build of clang and libc++ (and not libstdc++).</div><div><br></div></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div class="gmail_extra"><div class="gmail_quote"><div><div>15.85user 0.48system 0:16.38elapsed 99%CPU (0avgtext+0avgdata 4053852maxresident)k</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>0inputs+24outputs (0major+381214minor)pagefaults 0swaps</div></div></div></div></blockquote><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div><br></div><div>diff:</div><div><br></div></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div class="gmail_extra"><div class="gmail_quote"><div><div>diff --git a/CMakeLists.txt b/CMakeLists.txt</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>index 0143461..109d975 100644</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>--- a/CMakeLists.txt</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+++ b/CMakeLists.txt</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>@@ -1,9 +1,9 @@</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div> cmake_minimum_required(VERSIO<wbr>N 3.5)</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div> project(ctai)</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div> </div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>-add_definitions(-std=c++1z -ftemplate-backtrace-limit=0 -ftemplate-depth=1024)</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>-</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>-set(CMAKE_CXX_COMPILER clang++-3.9)</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+set(CMAKE_CXX_COMPILER clang++-3.9 CACHE STRING "")</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1z -stdlib=libc++ -ftemplate-backtrace-limit=0 -ftemplate-depth=8192" CACHE STRING "" FORCE)</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+set(CMAKE_MODULE_LINKER_FLAGS ${CMAKE_MODULE_LINKER_FLAGS} "-std=c++1z -stdlib=libc++" CACHE STRING "" FORCE)</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div> </div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div> set(INCLUDE_FILES</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>         register.hpp</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>diff --git a/main.cpp b/main.cpp</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>index b95eb4d..35e6d6f 100644</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>--- a/main.cpp</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+++ b/main.cpp</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>@@ -30,6 +30,66 @@ using code = decltype(</div></div></div></div><span><div class="gmail_extra"><div class="gmail_quote"><div><div>     "mov ebx , 1 "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>     "add eax , ebx "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>     "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div></span><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+    "mov DWORD PTR [ ebp + 4 ] , eax "</div></div></div></div><span><div class="gmail_extra"><div class="gmail_quote"><div><div>     "jmp .loop_label "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div> ":end_label "</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>     "mov eax , DWORD PTR [ ebp + 16 ] "</div></div></div></div></span><div class="gmail_extra"><div class="gmail_quote"><div><div>@@ -39,4 +99,4 @@ int main()</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div> {</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>     std::cout << "15th element of fibonacci series is: " << cai::execute_code<code>;</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>     return 0;</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>-}</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>\ No newline at end of file</div></div></div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>+}</div></div></div></div></blockquote><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div> </div></div>
</div></div></div>
</blockquote></div><br></div></div></div></div>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>