🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: kompilacja, ELF, Linux, specyfikacja

#2095
From: RobertGawron
Date: Thu, 28 Jan 2010 18:58
53 lines
3466 bytes
Witam,
dzięki za odpowiedź.

Zamiast generować z pliku z kodem asemblera (o składni, jaką mam) plik
o składni NASM'a, czy innej i kompilowania go normalnie, wolałbym
napisać swój kompilator, który pobiera ten plik (z moją składnią)
asemblera i tworzy plik wykonywalny (albo pliki, które później się
linkuje, już normalnie).

Czytam teraz swój wcześniejszy post i widzę, że jest trochę
zagmatwany, więc napiszę raz jeszcze.


Przykładowy skompilowany kod:

rgawron@foo:/opt/asm/nasm$ objdump -d foo

foo:     file format elf32-i386

Disassembly of section .text:

08048060 <.text>:
 8048060:       31 c0                   xor    %eax,%eax
 8048062:       31 db                   xor    %ebx,%ebx
 8048064:       bb 37 00 00 00          mov    $0x37,%ebx
 8048069:       b8 05 00 00 00          mov    $0x5,%eax
 804806e:       01 d8                   add    %ebx,%eax
 8048070:       89 c3                   mov    %eax,%ebx
 8048072:       b8 01 00 00 00          mov    $0x1,%eax
 8048077:       cd 80                   int    $0x80

Chodziło mi o drugą i trzecią kolumnę (licząc od 1 ;-)), skąd ludzie,
którzy tworzą kompilatory wiedzą, że instrukcję int 0x80 trzeba
przetłumaczyć na 0xcd 0x80.

W międzyczasie znalazłem odpowiedź na to pytanie (aczkolwiek nie wiem,
czy pełną) - http://www.logix.cz/michal/doc/i386/chp17-03.htm

Asembler, który mam jest b. prosty, więc liczę, że pójdzie to w miarę
szybko, jakby ktoś chciał o nim poczytać, to tu jest link (
http://rgawron.megiteam.pl/2009/04/23/vm/ ) (mam nadzieję, że nie
będzie mi to poczytane za spam).

Trudno mi było znaleźć info w sieci, bo co bym nie wpisał w
wyszukiwarce to dostawałem linki do kursów uczących asemblera albo
opisujących jak skompilować program.

Dzięki za odpowiedź, jeśli będziecie mieli jakieś info, na co zwrócić
uwagę, czy linki do jakiś książek albo kodów źródłowych to też chętnie
przejże.

pozdrawiam
Robert Gawron
Technical Details
Message-ID: <d146137e-0741-43a3-a3c2-3eeefc9ad572@r19g2000yqb.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!news.prz.edu.pl!news.nask.pl!news.nask.org.pl!news.uni-stuttgart.de!news.stw-bonn.de!news.netcologne.de!newsfeed-fusi2.netcologne.de!news.mixmin.net!feeder1-2.proxad.net!proxad.net!feeder1-1.proxad.net!198.186.194.247.MISMATCH!news-out.readnews.com!transit3.readnews.com!postnews.google.com!r19g2000yqb.googlegroups.com!not-for-mail
References: <63f1ee0c-fb30-4145-a90c-cbaa5e2593e4@36g2000yqu.googlegroups.com> <hjqiib$vp2$1@news.onet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!news.prz.edu.pl!news.nask.pl!news.nask.org.pl!news.uni-stuttgart.de!news.stw-bonn.de!news.netcologne.de!newsfeed-fusi2.netcologne.de!news.mixmin.net!feeder1-2.proxad.net!proxad.net!feeder1-1.proxad.net!198.186.194.247.MISMATCH!news-out.readnews.com!transit3.readnews.com!postnews.google.com!r19g2000yqb.googlegroups.com!not-for-mail
From: RobertGawron <mojwpisdao@gmail.com>
Newsgroups: pl.comp.lang.asm
Subject: Re: kompilacja, ELF, Linux, specyfikacja
Date: Thu, 28 Jan 2010 10:58:07 -0800 (PST)
Organization: http://groups.google.com
Lines: 60
Message-ID: <d146137e-0741-43a3-a3c2-3eeefc9ad572@r19g2000yqb.googlegroups.com>
References: <63f1ee0c-fb30-4145-a90c-cbaa5e2593e4@36g2000yqu.googlegroups.com>  <hjqiib$vp2$1@news.onet.pl>
NNTP-Posting-Host: 89.79.32.23
Mime-Version: 1.0
X-Trace: posting.google.com 1264705087 16611 127.0.0.1 (28 Jan 2010 18:58:07 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Thu, 28 Jan 2010 18:58:07 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: r19g2000yqb.googlegroups.com; posting-host=89.79.32.23;  posting-account=RUL1TgoAAADzart_nOyqCqQqNq0N7nMv
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5)  Gecko/2008121621 Ubuntu/8.04 (hardy) Firefox/3.0.5,gzip(gfe),gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit