Sida 3 av 3
					
				Re: Hur identifiera bortoptimerad kod?
				Postat: 31 maj 2020, 22:03:24
				av Jan Almqvist
				Du skojar med mej nu eller?
Med "skriva sönder" menar jag att såklart inte att själva RAM-minnet går sönder utan det är innehållet som förstörs när man skriver på fel ställe och skriver över t.ex. stack eller variabler. 
I vissa fall kan man också "skriva sönder" programkod som vilket kan utnyttas för att t.ex. exekvera skadlig kod.
			 
			
					
				Re: Hur identifiera bortoptimerad kod?
				Postat: 31 maj 2020, 22:11:50
				av TomasL
				Ok, tolkade det som att du menade att fysiskt skriva sönder minnet.
			 
			
					
				Re: Hur identifiera bortoptimerad kod?
				Postat: 1 juni 2020, 07:39:02
				av guckrum
				Hur ser ett minimalt exempel med "felet" ut?
			 
			
					
				Re: Hur identifiera bortoptimerad kod?
				Postat: 1 juni 2020, 08:16:31
				av Jan Almqvist
				Jag har provkört koden på 
https://www.onlinegdb.com/online_c_compiler.
Om parameter opt ligger i intervallet [2,5] är allt OK.
Kod: Markera allt
opt = 2, str = 1.2345                                                                                                                                       
opt = 3, str = 12.345                                                                                                                                       
opt = 4, str = 123.45                                                                                                                                       
opt = 5, str = 1234.5 
Men om parameter opt har värdet 1 kommer variabeln i att bli -1:
Kod: Markera allt
      if( dot == i) {
         str[i] = i2str_dot;
         i--;                          <------ Här slår i runt vid nedräkning från 0 och blir -1.
      }
      str[i] = r + 48u;                <------ Här skrivs det *utanför* str.
 
			
					
				Re: Hur identifiera bortoptimerad kod?
				Postat: 1 juni 2020, 22:34:12
				av TomasL
				opt kan bara ta dessa värden:
 	
Kod: Markera allt
#define I2STR_NODOT	  0
	#define I2STR_1DEC		  5
	#define I2STR_2DEC		  4
	#define I2STR_3DEC		  3
	#define I2STR_4DEC		  2
	
	#define I2STR_PLUSSIGN	  8
	#define I2STR_ADDSPACE	 16
	
	#define I2STR_L_ADJ		  0
	#define I2STR_R1ADJ		192
	#define I2STR_R2ADJ		160
	#define I2STR_R3ADJ		128
	#define I2STR_R4ADJ		 96
	#define I2STR_R5ADJ		 64
	#define I2STR_R6ADJ		 32
Opt består av en kombination av ovanstående, 1 från varje grupp.
Risken att nånting konstigt kan hända är i princip noll.
 
			
					
				Re: Hur identifiera bortoptimerad kod?
				Postat: 2 juni 2020, 08:25:51
				av guckrum
				Om du visar ett minimalt "stand-alone"-exempel som innehåller felet behöver ingen spekulera.  Dessutom lär du ju behöva ett sådant om du skall buggrapportera.