🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Kilka pytań

#964
From: Pawel Kraszewski
Date: Sun, 31 Dec 2006 11:11
45 lines
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-mail
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>

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