Hírek | Archívum | Fórum | IRC | Amiga | AmigaOS | FAQ | RSS

 - Fórumok - Keresés - Statisztika - Szabályzat - Pegasos.hu fórum
forum.amigaspirit.hu / Fejlesztés / C ferdítő nyűgök
. 1 . 2 . >>
Szerző Üzenet
Chain-Q
Divatamigás

# Elküldve: 2009. Júl. 29. 23:50


Na, mostantól ilyen topic is van. Ha megkérdezik, én csináltam-e, letagadom. :P

És akkor kapásból meg is szegem a fórumszabályzatot, mert warez-t fogok tarhálni. StormC 4-e van-e valakinek? :) Kéne egy projekt lefordításához, amelyik abban íródott, és sajnos mindenféle StormC specifikus headereket meg support classokat is használ, amit úgy még kiszedni a projektből is kurva nehéz, hogy nincsenek meg a headerek se... (Egy darabig szenvedtem vele, de esélytelen.)

Cobra
Piros troll

# Elküldve: 2009. Aug. 07. 09:07


Nekem van, A4k-n. Csak azt nem tudom, hogy fogom onnan levadaszni. De lehet hogy egy CD-n is meg van valahol, kell meg? Mert ha igen akkor megnezem.

Chain-Q
Divatamigás

# Elküldve: 2009. Aug. 07. 14:28


Mar megvan, de koszi. :)

TCH
Tag

# Elküldve: 2010. Feb. 28. 19:09


Próbálom lefordítani Amigán a 64TAss cross-assemblert (http://singularcrew.hu/64tass/), de vajmi kevés sikerrel. A SAS/C egyszerűen képtelen lefordítani, a GCC meg hiányolja a linkert, ami nem volt benne az Amigás GCC csomagban és az Amineten sem találom.

Valami ötlet, hogy mit lehetne ezzel kezdeni?

Chain-Q
Divatamigás

# Elküldve: 2010. Feb. 28. 19:23 - Szerkesztve: charlie


@TCH:
A GNU LD, azaz a linker a a binutils csomagban van. Felrak, örül.

TCH
Tag

# Elküldve: 2010. Feb. 28. 19:49


Kössz Csárli, így már fut a gcc.
Most már csak valami leírás kéne, hogy s mint kéne összerakni egy Amigás makefilet. :)))

Chain-Q
Divatamigás

# Elküldve: 2010. Feb. 28. 19:58 - Szerkesztve: charlie


Van GNU make, azzal altalaban siman mukodnek a Unixos makefile-ok...

TCH
Tag

# Elküldve: 2010. Feb. 28. 20:29


Hát ez sajnos nem az általában kategória. :(
No rule to make target "64tass.c", needed by "64tass.o". Stop.

A makefile meg:
CC = gcc
OBJ = 64tass.o opcodes.o misc.o
#CFLAGS = -O2 -march=i486 -mcpu=i486 -pipe
#CFLAGS = -Wall -O3 -march=i686 -pipe -fomit-frame-pointer -fno-exceptions
#CFLAGS = -Wall

64tass: $(OBJ)

64tass.o: 64tass.c opcodes.h misc.h

opcodes.o: opcodes.c opcodes.h

misc.o: misc.c misc.h opcodes.h

.PHONY: clean strip

clean:
rm -f $(OBJ) 64tass *~

strip:
strip -R .note -R .comment -R .note.ABI-tag 64tass
A proci tudom, hogy majd 68k lesz, csak most bepostoltam az eredetit.

rachy
Tag

# Elküldve: 2010. Már. 01. 14:24


http://www.opussoftware.com/tutorial/TutMakefile.htm

Lasd: Inference rules bekezdes. Amugy nem nagy baj, hogy ki van kommentezve az osszes CFLAGS?

Travis
Tag
# Elküldve: 2010. Már. 01. 15:27


Szerintem az a baj, hogy a 64tass.c és a Makefile nincs egy könyvtárban, vagy valami más ok miatt a make nem találja a 64tass.c fájlt.

TCH
Tag

# Elküldve: 2010. Már. 01. 17:58 - Szerkesztve: TCH


Rachy: Nem tudom, hogy a kikommentelt CFLAGSek mit okozhatnak, nem nagyon buheráltam eddiglen gcc-t. Köszi a tutorialt.

Travis: Egy könyvtárban vannak, semmit nem változtattam a 64tass archívum tartalmán.

Chain-Q
Divatamigás

# Elküldve: 2010. Már. 03. 10:30


Az jutott eszembe, hogy nekem is volt hasonlo problemam, megpedig a M****OS SDK-ban levo, szinten 3.7x-es GNU Make-val, es a Free Pascallal. Tok hasonlo - ertelmetlen - hibauzeneteket hajigalt egy amugy szintaktikailag teljesen jo Makefile-ra. M****OS-en a 3.80-as GNU Make-ra frissites megoldotta a problemat, de most hirtelen nem talalok 3.77-esnél újabb 68k-s make-t.... Szóval passz.

TCH
Tag

# Elküldve: 2010. Már. 03. 11:02


http://aminet.net/package/dev/gg/make-3.80
http://aminet.net/package/dev/gg/make-3.81-bin-m68k

Hát én ezeket találtam, de nekem ezekkel sem akar működni. Valamit elkúrok?

Chain-Q
Divatamigás

# Elküldve: 2010. Már. 03. 11:29


Heh, ez fasza, mert rakerestem a Googlen es Amineten is, de nem dobta ki ezeket... De jo tudni, hogy van. Esetleg meg azt megprobalhatod, hogy SnoopDos-sal megnezed, hogy mi a francot probal megnyitni, es miert nem talal fileokat.

Travis
Tag
# Elküldve: 2010. Már. 03. 13:11


TCH, szerintem hagyd a fenébe ezt a make-t. Ha csak a 64Tass fordításához kell, akkor kézzel is beírhatod ezt a pár fordítási parancsot.

rachy
Tag

# Elküldve: 2010. Már. 04. 09:36


Vagy egy sima batch file-al is fordithatsz, ha lusta vagyok makefile-t gyartani en mindig az "m.bat"-ot alkalmazom... ;)

Chain-Q
Divatamigás

# Elküldve: 2010. Már. 04. 10:10


.bat? Amigan .bat? Te kocsog peces! :) Amugy en "b" nevu (b mint build, erted) fajlt szoktam csinalni. Aztan protect b s add :) Es tokjo. :P

rachy
Tag

# Elküldve: 2010. Már. 04. 18:13 - Szerkesztve: rachy


@chainq

Amigan nem forditok... ;)

(Aminek az a magyarazata, hogy ilyen egyszeru make-et utoljara a Plus/4-es projektjeimhez hasznaltam, de Amigara nincs normalis Plus/4 emulator, pocere meg van...)

TCH
Tag

# Elküldve: 2010. Már. 05. 19:25


Na, akkor megpróbálom kézzel bepötyögni, hátha sikerül nem elbaxni. :P

TCH
Tag

# Elküldve: 2010. Már. 06. 12:50 - Szerkesztve: TCH


Travis: Megpróbáltam kézzel mondani neki, hogy fordítsa le, de folyton a crt0.o fájlt hiányolja. És ha bemásolom neki akkor meg cpp0, cc1 fájlokért reklamál, továbbá azt mondja, hogy lgcc nincs beállítva.

TCH
Tag

# Elküldve: 2010. Nov. 05. 12:25 - Szerkesztve: TCH


Csárli, létezik az, hogy
#include "stdio.h"

int main()
{
int x = 457607;
int i = 0;
int y = 0;

for (i = 0; i < 2000000000; i++)
{
y = x * 10;
}

return 0;
}
gyorsabb mint
#include "stdio.h"

int main()
{
int x = 457607;
int i = 0;
int y = 0;

for (i = 0; i < 2000000000; i++)
{
y = (x << 3) + (x << 1);
}

return 0;
}

?

AliveMOon
Tag

# Elküldve: 2010. Nov. 05. 12:29 - Szerkesztve: alivemoon


Szerintem nem mert az elsönél a ciklusban egy mul utasítás lesz,
a másodiknál lesz 2 shift és egy öszeadás azaz 3 utasítás.

Chain-Q
Divatamigás

# Elküldve: 2010. Nov. 05. 12:30 - Szerkesztve: charlie


@TCH:
Milyen procin? Modern procin simán, ma már a szorzás nem ördögtől való mint régen, a legtöbb mai proci 1, max 2 órajel alatt tolja. Ehhez képest a két shift, és az eredmények összeadása (min. 3 müvelet, az egyéb overheadről nem beszélve, pl. az X dupla betöltése két regiszterbe) az nyilván lassabb, egy olyan procin, ahol a szorzás relativ gyors.

Nincs ebben semmi mágia. Legrosszabb esetben megnézed a generált kódot (a legtöbb jó fordító le tudja rakni temp állományba a generált assembly forrást), és összeadod az utasitásokat, mi hány órajel, az adott procin.

Szerk: Na megnéztem konkrétan. 68060, természetesen, csak hogy ontopicok legyünk. A 68060-on 2 órajel a szorzás, ehhez képest 1+1 a shift, és még egy az összeadás, plusz legalább egyel több move, az x változó dupla regiszterbe inicializálása miatt. Tight loopban akár sokkal lassabb is lehet a shiftelgetős verzió...

TCH
Tag

# Elküldve: 2010. Nov. 05. 12:45 - Szerkesztve: TCH


sux86 Linux.

Szóval akkor ma már nem lehet kioptimalizálni a mul/div műveleteket, max ha egy shift az egész, vagy egy shift és egy összeadás.

Hogy lehet az asm forrást kidumpolni gcc-vel?

Chain-Q
Divatamigás

# Elküldve: 2010. Nov. 05. 13:02 - Szerkesztve: charlie


@TCH:
Nem lehet, de ha belegondolsz értelmetlen is. A szorzást azért volt szokás régen kioptimalizálni, mert sokkal lassabb volt (pl. egy 030-on még 28 órajel, ha jól rémlik). Miután a szorzás gyors lett, már nem volt értelme miért kioptimalizálni. A kód csak bonyolultabb, trükkösebb, rugalmatlanabb és nehezebben átlátható lett az ilyen trükköktől. És miután lassabb is, mindenki jó gyorsan elfelejtette. Persze, ha mondjuk 68000-re, vagy valami más, mai szemmel nagyon limitált procira fejlesztesz, akkor jó az ilyesmit észben tartani. Valamint a kettő hatványaival való szorzás helyett a shiftelés általában még mindig gyorsabb, de azt a fordítók szokták is tudni.

Assembly forrás kimentése: gcc --save-temps <valami.c>, ekkor valami.s-ben lesz a generált forrás. De vigyázat, x86-on a GCC/GAS páros nem Intel, hanem ún. AT&T szintakszist használ!

TCH
Tag

# Elküldve: 2010. Nov. 05. 13:11 - Szerkesztve: TCH


Quoting: charlie
A kód csak bonyolultabb, trükkösebb, rugalmatlanabb és nehezebben átlátható lett az ilyen trükköktől. És miután lassabb is, mindenki jó gyorsan elfelejtette.
:( Vagyis akkor kizárólag a
x * 2^n
x / 2^n
x * (2^n + 1)
x / (2^n + 1)
x * (2^n - 1)
x / (2^n - 1)
formulákból lehet
x << n
x >> n
(x << n) + x
(x >> n) + x
(x << n) - x
(x >> n) - x
formulákat csinálni. Illetve modulónál x % 2^n ből lesz x & (2^n) - 1

Quoting: charlie
Assembly forrás kimentése: gcc --save-temps <valami.c>, ekkor valami.s-ben lesz a generált forrás.
Köszi.
Quoting: charlie
De vigyázat, x86-on a GCC/GAS páros nem Intel, hanem ún. AT&T szintakszist használ!
Nem baj, értem én akkor is, ha ákhcentussal mongya. ;)

Chain-Q
Divatamigás

# Elküldve: 2010. Nov. 05. 13:18 - Szerkesztve: charlie


@TCH:
:(

Nem értem a depresszió okát. Ez egy tökjó HW feature, aminek mindenki örült kb. Végülis azt kell megérteni, hogy nem a shiftelgetés lett lassabb, hanem a szorzás sokkal gyorsabb. Az ideális eset ugye az lenne, ha egyetlen matematikai alapműveletet sem kéne kioptimalizálni, mert mind egyforma gyors lenne. Na azért ott még nem tartunk.

Az osztás pl. továbbra is lassabb általában, különösen a lebegőpontos osztás. Ahelyett ma is inkább reciprokkal való szorzást használnak. Ezenkívül a procik szeretnek elvérezni pl. a gyökvonás műveleten, a G3/G4-ben pl. mezei egyszerűséggel nincs is gyökvonás, szoftverből kell... Szóval illyen trükkök ma is kellenek, ha nagyon szereted ezeket, csak máshol. :)

TCH
Tag

# Elküldve: 2010. Nov. 05. 13:28 - Szerkesztve: TCH


Nem depresszió, csak úgy megszoktam, hogy kerülöm a szorzást/osztást, lehet megszokni, hogy innentől csak a fenti formulákra vonatkozik.
Gyökvonás, az nem táblából megy vagy valami ilyesmi? Mint a szinusznál?

Sz*rk: Egyébként kidumpoltam az asm forrásokat és igazad volt a tologatóssal hosszabb eredményt kapunk, bár ez nem lepett meg, az inkább, hogy a sux86 képes mostanra szorozni hatékonyan is. :P

Sz*rk2: Mármint, meglepett, hogy huszoniksz év után sikerült nekik, többre számítottam volna. :P

Travis
Tag
# Elküldve: 2010. Nov. 05. 14:01


gcc -S opcióval is generál asm forrást és még kommenteli is -fverbose-asm az opcióval.

TCH
Tag

# Elküldve: 2010. Nov. 05. 14:28


Dankesőn a tippet.

. 1 . 2 . >>
forum.amigaspirit.hu / Fejlesztés / C ferdítő nyűgök
 
 

Powered by online community script miniBB™ © 2001-2024