Article View: pl.comp.lang.asm
Article #1785Transpozycja tablicy w C & Asembler
From: Doleś
Date: Fri, 11 Apr 2008 01:48
Date: Fri, 11 Apr 2008 01:48
31 lines
2907 bytes
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-mailShow 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