Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 16:16

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Compiler Problem (vs c++ 2011)

Discussion on Compiler Problem (vs c++ 2011) within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Crack-wtf's Avatar
 
elite*gold: 0
Join Date: Feb 2012
Posts: 1,402
Received Thanks: 2,941
Compiler Problem (vs c++ 2010)

Ich habe ein Problem mit meinem Compiler.
Er erstellt manchmal falschen Code.

Das ist jetzt schon das ca. 3. mal dass mir das passiert und jedesmal hab ich einen schlechten Workaround gemacht.

Das problem ist, wenn ich kleine Funktionen habe, dass sich der Compiler manchmal entscheidet die funktion einfach direkt so in die funktion zu packen, die sie callt.

Hier die stelle:

C++


Und hier die stelle in ASM:



Und hier die Funktion die gecallt wird:


Hoffe jemand kann mir weiterhelfen
Crack-wtf is offline  
Old 09/01/2013, 06:09   #2
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
mit "__declspec(noinline)" vor der funktionssignatur kannst du (zmdst bei vcc) verhindern, dass der compiler inlined - auch wenn ich nicht verstehe wieso der compiler da anscheinend fehlerhaften code produziert.
ka ist aber auch erst 6 uhr morgens, grad erst aufgestanden, ich guck gleich nochmal rüber.

EDIT:
sicher, dass die klammersetzung hier genauso ist wie in dem code den du kompiliert hast?

EDIT2:
außerdem sind 0 und 1 keine bools die du da returnst - das ist sehr unschön

EDIT3:
ok, verstehe ich jetzt auch nicht, bei mir im testprogramm erzeugt er vollkommen korrekt ein lea eax, [esi-1]:

Code:
	for( int i = 1; i <= 10; i++)
00A7100D 8B 3D A4 20 A7 00    mov         edi,dword ptr [__imp__printf (0A720A4h)]  
00A71013 A3 7C 33 A7 00       mov         dword ptr [cClient (0A7337Ch)],eax  
00A71018 BE 01 00 00 00       mov         esi,1  
00A7101D 8D 49 00             lea         ecx,[ecx]  
	{
		if(!IsValidIndex(i))   //Hier schriebt er die Funktion direkt rein und es entsteht ein fehler.
00A71020 85 F6                test        esi,esi  
00A71022 74 25                je          main+49h (0A71049h)  
00A71024 83 FE 0A             cmp         esi,0Ah  
00A71027 7F 20                jg          main+49h (0A71049h)  
00A71029 8B 0D 7C 33 A7 00    mov         ecx,dword ptr [cClient (0A7337Ch)]  
00A7102F 8D 46 FF             lea         eax,[esi-1]  
00A71032 03 C0                add         eax,eax  
00A71034 83 BC C1 E4 AF 2E 00 00 cmp         dword ptr [ecx+eax*8+2EAFE4h],0  
00A7103C 74 0B                je          main+49h (0A71049h)  
			continue;

		printf("Index: %d is valid!\n", i);
00A7103E 56                   push        esi  
00A7103F 68 68 23 A7 00       push        offset ___xi_z+2A0h (0A72368h)  
00A71044 FF D7                call        edi  
00A71046 83 C4 08             add         esp,8  

	for( int i = 1; i <= 10; i++)
00A71049 46                   inc         esi  
00A7104A 83 FE 0A             cmp         esi,0Ah  
00A7104D 7E D1                jle         main+20h (0A71020h)  
	}
EDIT4:
kannst mal versuchen die zeile:
Code:
DWORD tmpBase = *(DWORD*)((index-1)*16+4 + 0x002EAFE0 + cClient);
in mehrere zeilen zu splitten, vllt gibts da bei dir i.nen parser fehler - seltsam.

EDIT5:
was haste denn für ne IDE/compiler?

EDIT6:
wenn das da 1:1 der code ist den du kompiliert hast gibts i-nen parserfehler mit der klammerung, würde ich wie gesagt mal die zeile aufsplitten - aber komisch, dass das nur beim inlinen passieren soll.
Dr. Coxxy is offline  
Thanks
1 User
Old 09/01/2013, 07:56   #3
 
Crack-wtf's Avatar
 
elite*gold: 0
Join Date: Feb 2012
Posts: 1,402
Received Thanks: 2,941
Quote:
Originally Posted by Dr. Coxxy View Post
...
Danke dass du dir die mühe gemacht hast ^^

Ich bin den Fehler wiedermal mit einem Workaround umgangen.
(Klasse Grob nachgebaut und anschließend reinterpretiert.)

Hab die ganze nacht lang rumprobiert, bis ich keinen Bock mehr hatte.
Habe alles mögliche Probiert, und es kam immer wieder das selbe Problem.

Naja kann closed werden ^^
Crack-wtf is offline  
Old 09/01/2013, 08:31   #4
 
Dr. Coxxy's Avatar
 
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
Quote:
was haste denn für ne IDE/compiler?
10char
Dr. Coxxy is offline  
Old 09/01/2013, 09:04   #5
 
Crack-wtf's Avatar
 
elite*gold: 0
Join Date: Feb 2012
Posts: 1,402
Received Thanks: 2,941
Visual Studio 2010 Ultimate (x86)
Crack-wtf is offline  
Reply


Similar Threads Similar Threads
[HELP] Problem with VC ++ compiler
04/14/2013 - C/C++ - 0 Replies
Hi epvpers i'm not an expert in vc++ but i'm learning trying different things... Well my problem i get a src of a memory scaner made in C, of course i named the source files "somename.c", this is not my problem the problem is that when i run the script inside vc++ it works perfectly but when i open the exe alone without vc++ an error came up :mad: Here's an image: http://i.epvpimg.com/YNfog.png I compile the same src in Codeblocks and it works perfectly don't know what could be i...
Compiler
05/07/2012 - C/C++ - 0 Replies
Sorry for double post.im writing from phone...please delete one.
Baruna System compiler Problem
08/30/2011 - Flyff Private Server - 4 Replies
Edit: Ok danke, auch dir Yannick :-P hab den Fehler gefunden ^^ Euch noch allen nen schönen Abend ach und Yannick lass dich nicht unterkriegen ;-)
WxWidget Compiler Problem
06/12/2011 - General Coding - 1 Replies
Ok hallo Leute, Nach langer Zeit des Benutzens des Konsolenfensters möchte ich in die GUI-Programmierung einsteigen.Nur leider habe ich ein Problem ich binde die wx header datei ein ("wx.h") und hab meinem Editor(Codeblocks) den Pfad zu den WxWidget includes gegeben (bei mir :"C:\wxWidgets-2.9.1\include\wx\wx.h") Aber beim Versuch etwas zu compilen bekomme ich immer den Fehler, dass er Header Datein vermisst wenn ich aber in meinem include ordner schaue ,dann finde ich sie dort. Hat...
[Source Problem] Liegts am Compiler?
04/04/2011 - Flyff Private Server - 8 Replies
Rebuild All: 6 succeeded, 2 failed, 0 skipped Es scheitert an Neuz und WorldSever Und es ist in fast allen Fällen dieser Error: \Users\Flyff Server\Desktop\Source\Official Source\_Common\Project.cpp(4502) : error C3861: 'm_anIndex': identifier not found, even with argument-dependent lookup



All times are GMT +1. The time now is 16:17.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.