Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Assembler gesucht

7 views
Skip to first unread message

Sebastian Biallas

unread,
Feb 2, 2006, 5:51:08 PM2/2/06
to
Hallo!

Ich suche einen x86-Assembler mit folgenden Eigenschaften:

1) Intel-Syntax

2) läuft unter allen gängigen x86-Betriebssystemen (d.h. min. Linux,
Windows (cygwin), BSDs). "Läuft" heißt: kann ein Output generieren, mit
dem der dort ansässige gnu-ld was anfangen kann.

3) Halbwegs intelligent. Ich kann auch direkt Maschinensprache
schreiben. Ist aber nicht sinnvoll, wenn der Computer mir Arbeit
abnehmen kann, und sich jeweils für die kurzmöglichsten Opcodes
entscheiden kann, sofern sinnvoll. Ich weiß, das ist Arbeit, wenn man
die Datei dafür drölf mal parsen muss, aber mein Computer macht das
gerne für mich.

4) Ein kann halbwegs mit Makros umgehen.

5) x86_64-Unterstützung wäre nicht schlecht.


Bis jetzt habe ich nasm verwendet. Der ist aber irgendwie tot und hat
Punkt 3 sowieso nie wirklich erfüllt. yasm ist eigentlich der gleiche
Mist in grün, dafür aber wenigstens nicht dokumentiert. gas scheidet
wegen Punkt 4 wohl aus.

Gibt's sowas wirklich nicht? Läuft masm unter Wine?

--
Gruß,
Sebastian

Florian Weimer

unread,
Feb 3, 2006, 5:22:19 AM2/3/06
to
* Sebastian Biallas:

> Gibt's sowas wirklich nicht?

GAS beherrscht die Intel-Syntax und nimmt neuerdings auch die kürzeren
Opcodes (selbst wenn in den Quellen etwas anderes steht).

Heiko Nocon

unread,
Feb 3, 2006, 10:48:12 AM2/3/06
to
Sebastian Biallas wrote:

>3) Halbwegs intelligent. Ich kann auch direkt Maschinensprache
>schreiben. Ist aber nicht sinnvoll, wenn der Computer mir Arbeit
>abnehmen kann, und sich jeweils für die kurzmöglichsten Opcodes
>entscheiden kann, sofern sinnvoll.

Dann nimm halt einen Hochsprachencompiler und keinen Assembler. Das
besondere an einem Assembler ist ja gerade, daß man die Codegenerierung
bis ins kleinste Detail beeinflussen kann.

Will man das nicht und sich statt dessen auf Maschinenlogik verlassen,
dann kann man auch gleich eine Hochsprache verwenden. Da hat man dann
wenigstens auch deren Vorteile.

Sebastian Biallas

unread,
Feb 3, 2006, 11:01:58 AM2/3/06
to

Bei genauerer Betrachtung gefällt mir GAS gar nicht mal so schlecht.
Dokumentation ist zwar etwas dürftig, aber man kann ja nicht alles haben.

Wo muss ich denn ansetzten, wenn ich z.B. nur unter Windows alle extern
sichtbaren Symbole mit '_' prefixen will? Nasm hatte dafür die Option
"--prefix _", wahrscheinlich geht es hier irgendwie anders.

--
Gruß,
Sebastian

Sebastian Biallas

unread,
Feb 3, 2006, 11:15:06 AM2/3/06
to
Heiko Nocon wrote:
> Sebastian Biallas wrote:
>
>> 3) Halbwegs intelligent. Ich kann auch direkt Maschinensprache
>> schreiben. Ist aber nicht sinnvoll, wenn der Computer mir Arbeit
>> abnehmen kann, und sich jeweils für die kurzmöglichsten Opcodes
>> entscheiden kann, sofern sinnvoll.
>
> Dann nimm halt einen Hochsprachencompiler und keinen Assembler.

Nehme ich ja für die Sachen, bei denen es geht. Wenn Du mir jetzt einen
Hochsprachencompiler vorschlägst, bei dem ich ohne Interna zu kennen
einfach den Stack unwinden kann in Code, der von on-demand generiertem
x86-Code aufgerufen wird und bei dem ich einfachen Zugriff auf Carry und
Overflow und Parity habe, würde ich den Assemblerteil wegschmeißen.

> Das
> besondere an einem Assembler ist ja gerade, daß man die Codegenerierung
> bis ins kleinste Detail beeinflussen kann.

Ach, hör doch auf. Kein Mensch interessiert sich dafür, ob man "83c001",
"0501000000" oder "81c001000000" für "add eax, 1" nimmt. Das hängt doch
von Umständen ab, die der Assembler im Zweifel sehr viel besser kennt,
als man selber. Und welcher Assembler lässt einem die Wahl zwischen den
beiden Opcodes für "mov eax, ecx"[1]?

> Will man das nicht und sich statt dessen auf Maschinenlogik verlassen,
> dann kann man auch gleich eine Hochsprache verwenden. Da hat man dann
> wenigstens auch deren Vorteile.

Computer können auf einer bestimmten Ebene Maschinensprache sehr viel
besser als Menschen generieren (solange man nicht 2 Jahre an 20 Bytes
Code forscht). Genau das will ich dem Assembler überlassen.

[1] Der HT kann das. Ist aber kein klassischer Assembler und in dem Fall
ist es nur Spielerei.

--
Gruß,
Sebastian

stefanen

unread,
Feb 9, 2006, 10:01:04 AM2/9/06
to
Dem kann ich zustimmen.
Ohne Assembler ist es heute fast schon eine Zumutung.

Vorallendingen die Präfixe und Suffixe (die Teilweise noch von Flag's
abhängig sind) und die verschiedenen Schreibweisen (Intel/Motorola)
haben mir zu schaffen gemacht. (z.B.: Handbuch ist in Motorola und Chip
arbeitet mit Intel)

Den Stack gibt es z.B. als up-to-down oder down-to-up und usw.
Außerdem gibt es noch die 3-Argument-Befehle und was weiß der Teufel.
Zur Not ist ein scriptfähiger Texteditor besser und schneller als jede
Handarbeit.
(natürlich können dann keine Suffixe oder Präfixe durch Flag-Setzung
weggelassen werden)
Der Code ist nachher viel lesbarer und Zeit kostet es heute auch nicht
mehr, wenn der Op-Code ein wenig länger ist. (sicher gibt es Programme
wie z.B. LiLo, wo es auf jedes Byte ankommt, aber die sind die Ausnahme
und hier würde ich empfehlen Code aus dem Assembler nachzubearbeiten)

chaoscode

unread,
May 18, 2006, 11:05:44 AM5/18/06
to
kann dir nur fasm(-> flat assembler) empfehlen

Sebastian Biallas schrieb:

0 new messages