🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Transpozycja tablicy w C & Asembler

#1785
From: Doleś
Date: Fri, 11 Apr 2008 01:48
31 lines
2907 bytes
Witam,
mam pewien problem z transpozycją tablicy w Asemblerze. Napisałem 
wszystko oprócz samej transpozycji w C. Ten sam program pod Windowsem 
napisany w Visual Studio działa, ale pod Linuksem już nie chce. 
Naturalnie nie próbuję składni MASMa przerzucić na Linuksa :) 
Przepisałem sobie program na wg składni NASMa i oczywiście po kompilacji 
i asemblacji oraz linkowaniu mam legendarny, kochany błąd "Segmentation 
Fault". Próbowałem poradzić sobie samemu w związku z czym zrobiłem 
przyspieszony kurs obsługi GDB (którego jeszcze do dzisiaj nie 
potrafiłem obsługiwać) i debugowałem program. Zrobiłem "jump transponuj" 
i dawałem na przemian "stepi", "print /d $rejestr" oraz "x /10i <adres>" 
i starałem się kontrolować po kawałku jak się wykonuje program. O dziwo 
sam algorytm wydawał się poprawny, śledziłem zmienne no i nie było 
naruszenia ochrony pamięci w pętlach kodu. Problem powstał dopiero po 
instrukcji RET gdy kod programu poszedł sobie hen, hen daleko poza 
wstawkę w Asemblerze. Jedyne moje skojarzenie było takie, że gdzieś jest 
nadpisane EIP, ale analizowałem kod i nie mam pojęcia gdzie. Poza tym, 
czy gdyby nie było naruszenia stosu to nie wywaliłby komunikat "Smashing 
stack detectet" ? Bo kiedyś takie coś miałem jak próbowałem techniki 
przepełnienia bufora na własnym programie.Podejrzewam, że pewnie coś 
sknociłem przy przepisywaniu ze składni MASMa. Oto i kody źródowe wraz z 
Makefile.
Kod w C: http://paste.org/index.php?id=2580
Kod w Asemblerze: http://paste.org/index.php?id=2581
Makefile: http://paste.org/index.php?id=2582
PS: Wybaczcie mi, że kod w Asemblerze jest taki "prostacki". Chciałem 
użyć adresowania do tablicy dwuwymiarowej wg schematu Tablica[x][y] = 
[Tablica + (x*dlugosc wiersza + y * rozmiar] ale nie mam takiej wprawy 
przy wielowymiarowych tablicach i brakowalo mi po prostu rejestrów na 
zrealizowanie takiego pomysłu a nie miałem żadnej idei kiedy okładać 
sobie coś na stos i z niego zdejmować.
Technical Details
Message-ID: <ftm8vq$bl9$1@nemesis.news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!news.tpi.pl!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!news.tpi.pl!not-for-mail
From: Doleś <doles2@gmail.com>
Newsgroups: pl.comp.lang.asm
Subject: Transpozycja tablicy w C & Asembler
Date: Fri, 11 Apr 2008 03:48:04 +0200
Organization: TP - http://www.tp.pl/
Lines: 31
Message-ID: <ftm8vq$bl9$1@nemesis.news.neostrada.pl>
NNTP-Posting-Host: abwf143.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
X-Trace: nemesis.news.neostrada.pl 1207871290 11945 83.8.229.143 (10 Apr 2008 23:48:10 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Thu, 10 Apr 2008 23:48:10 +0000 (UTC)
User-Agent: Thunderbird 2.0.0.12 (X11/20080227)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit