Page 1 of 1

ИАРгавно

PostPosted: Thu, 25.09.2014 07:36:26
by TS-Labs
Заведу традиционную тему с обсирательством С компилера, на этот раз не гцц, а ИАР.
---
Компилил фатфс и наступил на сгенеренный говнокод. В прошлый раз уже наступал, это была опция -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 с включенными андоками. Размер файла при этом немного больше.

Re: ИАРгавно

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

Подробности во вложении.

Re: ИАРгавно

PostPosted: Mon, 13.04.2015 17:42:35
by TS-Labs
Спасибо за репорт. Предлагаю наполнять топик всеми словленными багами и желательно найденными воркэраундами к ним. Авось удастся составить юзабельный мануал по пользованию сабжем.

Re: ИАРгавно

PostPosted: Mon, 13.04.2015 21:47:46
by NovaSTorm
TS-Labs wrote:помериять такты

TS-Labs wrote:630490178

А чем и как такое большое мерять?

Re: ИАРгавно

PostPosted: Tue, 14.04.2015 01:00:53
by TS-Labs
Анрыльным дебаггером.

Re: ИАРгавно

PostPosted: Wed, 15.04.2015 18:45:17
by NovaSTorm
Это только в TS ветке или в старых тоже было? А то у меня только в пределах прерывания получалось померять.

Re: ИАРгавно

PostPosted: Wed, 15.04.2015 20:46:09
by TS-Labs
А ты джве бряки поставь - до входа в цикл и после. :badtease:

Re: ИАРгавно

PostPosted: Fri, 17.04.2015 18:27:17
by NovaSTorm
Хы, спасибо, разобрался! Не туда глядел =\
Надо почаще кодить, чтоб не забывать таких элементарных вещей =)

Re: ИАРдавно

PostPosted: Sun, 07.02.2016 10:11:24
by DimkaM
А есть разница при компиляцыи батником vs оболочкой?

т.е. iccz80.exe vs iccz80.dll

Re: ИАРгавно

PostPosted: Sun, 07.02.2016 17:41:34
by DimkaM
Если чаровый третий параметр юзается не вот сразу, а гденибудь опосля, то вроде всё нормально:
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;

Re: ИАРгавно

PostPosted: Mon, 08.02.2016 02:09:24
by TS-Labs
Димка, ключевое слово "вроде все нормально". Как ему карта ляжет, так и наговнокомпилит.

Re: ИАРгавно

PostPosted: Sun, 25.10.2020 20:18:19
by Den1982
Где в 2020 скачать ИАРгавно бесплатно и без смс? В гугле не нашел, если завалялось у кого киньте плиз.

Re: ИАРгавно

PostPosted: Tue, 27.10.2020 04:54:15
by TS-Labs