Article View: pl.comp.lang.asm
Article #964Re: Kilka pytań
From: Pawel Kraszewski
Date: Sun, 31 Dec 2006 11:11
Date: Sun, 31 Dec 2006 11:11
45 lines
2867 bytes
2867 bytes
johnny wrote: >> Nie. 32-bitowy kod to taki, w ktorym przestrzen adresowa jest 32-bitowa. >> Dzieki prefiksom mozna w 16-bitowym kodzie uzywac 32-bitowych rejestrow. >> > > OK. Co trzeba zrobić by kod był 32-bitowy? Jakaś dyrektywa, polecenie, > opcja? > O 32-bitowości kodu decyduje typ segmentu, w którym się on znajduje. Wieki temu robiłem mikrocudeńka ASM+C w ogóle bez runtime'a. Zakładając dyrektywę .386 (bo tylko ona daje w ogóle dostęp do _instrukcji_ 32 bitowych, natomiast nic nie mówi o "bitowości" programu jako takiego) sprawy mają się tak: * W 16-bitowym segmencie kodu domyślne instrukcje są 16-bitowe. Każda 32-bitowa jest prefiksowana. * W 32-bitowym segmencie kodu jest dokładnie na odwrót. Model FLAT dla cpu>=386 zakłada automatycznie segmenty 32-bitowe (dla .code, .data, itd), pozostałe modele mają domyślne segmenty 16-bitowe. Można oczywiście zrobić dowolny segment "na krzyż" korzystając z pełnej instrukcji definicji segmentu: name SEGMENT [align] [READONLY] [combine] [use] [?class?] statements W tej definicji trik to jest parametr 'use' (oczywiście istotny dla >=386): * use32 definiuje segment 32-bitowy niezależnie od modelu * use16 definiuje segment 16-bitowy niezależnie od modelu Polecam http://webster.cs.ucr.edu/Page_TechDocs/MASMDoc/ProgrammersGuide/ Problemy Twoje z sąsiedniego "odszczepu" wątka mogą wynikać (o ile dobrze pamiętam) z faktu, że linker 32-bitowy (znaczy Windowsowa aplikacja 32-bitowa) wymaga delikatnego "szturchnięcia" do wygenerowania aplikacji 16-bitowej. Niestety nie pamiętam jak :/ -- Pawel Kraszewski www.kraszewscy.net
Technical Details
Message-ID:
<en85s4$c25$1@atlantis.news.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mailReferences:
<en41ut$p9v$1@atlantis.news.tpi.pl> <1167430701.362900.283060@v33g2000cwv.googlegroups.com> <en5bg7$fcn$1@nemesis.news.tpi.pl> <1167479334.457754.245210@s34g2000cwa.googlegroups.com> <en5t03$omq$1@atlantis.news.tpi.pl> <1167489889.884671.181790@48g2000cwx.googlegroups.com> <en5umr$8c3$1@news.onet.pl> <en61h4$as2$1@atlantis.news.tpi.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: Pawel Kraszewski <Pawel@Kraszewscy.net> Newsgroups: pl.comp.lang.asm Subject: Re: Kilka pytań Date: Sun, 31 Dec 2006 12:11:55 +0100 Organization: tp.internet - http://www.tpi.pl/ Lines: 46 Message-ID: <en85s4$c25$1@atlantis.news.tpi.pl> References: <en41ut$p9v$1@atlantis.news.tpi.pl> <1167430701.362900.283060@v33g2000cwv.googlegroups.com> <en5bg7$fcn$1@nemesis.news.tpi.pl> <1167479334.457754.245210@s34g2000cwa.googlegroups.com> <en5t03$omq$1@atlantis.news.tpi.pl> <1167489889.884671.181790@48g2000cwx.googlegroups.com> <en5umr$8c3$1@news.onet.pl> <en61h4$as2$1@atlantis.news.tpi.pl> NNTP-Posting-Host: eef48.neoplus.adsl.tpnet.pl Mime-Version: 1.0 X-Trace: atlantis.news.tpi.pl 1167563460 12357 83.21.17.48 (31 Dec 2006 11:11:00 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Sun, 31 Dec 2006 11:11:00 +0000 (UTC) User-Agent: KNode/0.10.4 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit