ИАРгавно

Программирование, алгоритмы

Postby TS-Labs » Thu, 25.09.2014 07:36:26

Заведу традиционную тему с обсирательством С компилера, на этот раз не гцц, а ИАР.
---
Компилил фатфс и наступил на сгенеренный говнокод. В прошлый раз уже наступал, это была опция -z9.
Сейчас включил альтнабор (-ua) и получил неработоспособный бинарь для фат12.
Заодно не поленился помериять такты.

Code: Select all
option    tacts
-s8 -uu   630490178
-s9 -uu   631502150
-s8       632418776
-s9       633430725
-z9 -uu   638935100
-s7 -uu   639735102
-s7       641549795
-z9       642189194
-s9 -ua   crash
-z9 -ua   crash
-s7 -ua   crash

Сапрайз, но лучшую скорость дает не -s9, а -s8 с включенными андоками. Размер файла при этом немного больше.
User avatar
TS-Labs
 
Posts: 5042
Joined: Thu, 26.07.2012 01:29:56

Postby DDp » Mon, 13.04.2015 17:39:39

Achtung при передаче в функцию третьего одно-байтового параметра. :ohno:
Опции:
-ua -- альтернативный набор регистров
-s8 или -s9 -- оптимизация по скорости 8 и 9

Подробности во вложении.
Attachments
iar_bug.7z
(1.38 KiB) Downloaded 125 times
D356 47C0 35F8 F55E 8A52 A88F F3F8 B003 03EB 3D7F
DDp
 
Posts: 112
Joined: Fri, 03.08.2012 20:41:33

Postby TS-Labs » Mon, 13.04.2015 17:42:35

Спасибо за репорт. Предлагаю наполнять топик всеми словленными багами и желательно найденными воркэраундами к ним. Авось удастся составить юзабельный мануал по пользованию сабжем.
User avatar
TS-Labs
 
Posts: 5042
Joined: Thu, 26.07.2012 01:29:56

Postby NovaSTorm » Mon, 13.04.2015 21:47:46

TS-Labs wrote:помериять такты

TS-Labs wrote:630490178

А чем и как такое большое мерять?
NovaSTorm
 
Posts: 75
Joined: Sat, 22.06.2013 19:33:40

Postby TS-Labs » Tue, 14.04.2015 01:00:53

Анрыльным дебаггером.
User avatar
TS-Labs
 
Posts: 5042
Joined: Thu, 26.07.2012 01:29:56

Postby NovaSTorm » Wed, 15.04.2015 18:45:17

Это только в TS ветке или в старых тоже было? А то у меня только в пределах прерывания получалось померять.
NovaSTorm
 
Posts: 75
Joined: Sat, 22.06.2013 19:33:40

Postby TS-Labs » Wed, 15.04.2015 20:46:09

А ты джве бряки поставь - до входа в цикл и после. :badtease:
User avatar
TS-Labs
 
Posts: 5042
Joined: Thu, 26.07.2012 01:29:56

Postby NovaSTorm » Fri, 17.04.2015 18:27:17

Хы, спасибо, разобрался! Не туда глядел =\
Надо почаще кодить, чтоб не забывать таких элементарных вещей =)
NovaSTorm
 
Posts: 75
Joined: Sat, 22.06.2013 19:33:40

Postby DimkaM » Sun, 07.02.2016 10:11:24

А есть разница при компиляцыи батником vs оболочкой?

т.е. iccz80.exe vs iccz80.dll
lvd> Вроде да, но по матану спец TS-Labs, пусть расово верно и православно одобрит. :-P
DimkaM
 
Posts: 264
Joined: Thu, 26.07.2012 12:36:38

Postby DimkaM » Sun, 07.02.2016 17:41:34

Если чаровый третий параметр юзается не вот сразу, а гденибудь опосля, то вроде всё нормально:
Code: Select all
; 2380.   FRESULT f_open (
; 2381.       FIL* fp,            /* Pointer to the blank file object */
; 2382.       const TCHAR* path,  /* Pointer to the file name */
; 2383.       BYTE mode           /* Access mode and file open mode flags */
; 2384.   )
f_open:
   PUSH   IY
   EXX
   PUSH   BC
   EXX
   PUSH   IX
   LD   IX,0
   ADD   IX,SP
   PUSH   BC
   LD   HL,65496
   ADD   HL,SP
   LD   SP,HL
   PUSH   DE
   POP   IY
; 2385.   {
; 2386.       FRESULT res;
; 2387.       DIR dj;
; 2388.       BYTE *dir;
; 2389.       DEF_NAMEBUF;
; 2390.   
; 2391.   
   LD   A,E
   OR   D
   JR   NZ,?0475
?0474:
   LD   A,9
; 2392.       if (!fp) return FR_INVALID_OBJECT;
   JP   ?0487
?0475:
   PUSH   IY
   POP   HL
   XOR   A
   LD   (HL),A
   INC   HL
   LD   (HL),A
; 2393.       fp->fs = 0;         /* Clear file object */
; 2394.   
; 2395.       /* Get logical drive number */
; 2396.   #if !_FS_READONLY
; 2399.   #else
   LD   A,(IX+8)
   AND   1
   LD   (IX+8),A
; 2400.       mode &= FA_READ;
lvd> Вроде да, но по матану спец TS-Labs, пусть расово верно и православно одобрит. :-P
DimkaM
 
Posts: 264
Joined: Thu, 26.07.2012 12:36:38

Postby TS-Labs » Mon, 08.02.2016 02:09:24

Димка, ключевое слово "вроде все нормально". Как ему карта ляжет, так и наговнокомпилит.
User avatar
TS-Labs
 
Posts: 5042
Joined: Thu, 26.07.2012 01:29:56


Return to Coding

Who is online

Users browsing this forum: No registered users and 1 guest

x