🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #1792

Re: Transpozycja tablicy w C & Asembler

#1792
From: Jacek Wawrzaszek
Date: Sun, 13 Apr 2008 22:30
29 lines
2090 bytes
> myślałem, że to koniec moich problemów ale oczywiście nie. Problem
> polega na tym, że kombinowałem jak koń pod górkę aby napisać w
> Asemblerze funkcję która robiłaby to samo co taki zapis w C:
> for(i=0; i<A; i++)
>    for(j=0; j<B; j++)
>        transponowana[j][i] = macierz[i][j];


Powyższy algorytm można zapisać następująco (nota bene w ten właśnie
sposób powinien go zoptymalizować kompilator języka C):

int *pM = &macierz[0][0];
for(int i=0; i<A; i++)
{
    int *pT = &transponowana[0][i];
    for(int j=0; j<B; j++)
    {
        *pT = *(pM++);
        pT += A;
    }
}

Postać ta jest wygodniejsza do przekształcenia na assembler, a na dodatek
działa bardzo szybko, bo nie potrzebuje ani jednej operacji mnożenia.
"Na oko" wydaje mi się, że powyższy algorytm da się zaimplementować
przy użyciu 7 rejestrów, bez konieczności przechowywania czegokolwiek
na stosie (oczywiście poza parametrami wywołania funkcji).

J.
Technical Details
Message-ID: <ftu1ug$hlm$1@nemesis.news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!wsisiz.edu.pl!newsfeed.tpinternet.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!news.tpi.pl!not-for-mail
References: <ftm8vq$bl9$1@nemesis.news.neostrada.pl> <4800ac82$0$31457$f69f905@mamut2.aster.pl> <28cc2e2f-5986-4a3d-9ad4-2c847fa64b3d@q10g2000prf.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!wsisiz.edu.pl!newsfeed.tpinternet.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!news.tpi.pl!not-for-mail
From: "Jacek Wawrzaszek" <no.mail@no.spam>
Newsgroups: pl.comp.lang.asm
Subject: Re: Transpozycja tablicy w C & Asembler
Date: Mon, 14 Apr 2008 00:30:25 +0200
Organization: TP - http://www.tp.pl/
Lines: 30
Message-ID: <ftu1ug$hlm$1@nemesis.news.neostrada.pl>
References: <ftm8vq$bl9$1@nemesis.news.neostrada.pl> <4800ac82$0$31457$f69f905@mamut2.aster.pl> <28cc2e2f-5986-4a3d-9ad4-2c847fa64b3d@q10g2000prf.googlegroups.com>
NNTP-Posting-Host: pk218.wroclaw.sdi.tpnet.pl
Mime-Version: 1.0
X-Trace: nemesis.news.neostrada.pl 1208126224 18102 217.96.154.218 (13 Apr 2008 22:37:04 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Sun, 13 Apr 2008 22:37:04 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.3138
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit