J
Johannes Bauer
Guest
On 22.08.19 00:47, Hanno Foest wrote:
Hm, ich sehe einen Compiler durchaus als Werkzeug, sich Tipps und Ideen
zu holen.
Es ist jedenfalls nicht abzustreiten, dass ich selbst in händisch
geschriebenem Assembler zumindest theoretisch die MÜglichkeit hätte,
jeden Compiler zu outperformen. Dass /ich/ das nicht kann und vermutlich
die allermeisten Programmierer ebensowenig, ist schon ein separates Thema.
Händisch geschrieben, wenn du dir den anschaust. Bzw bei OpenSSL
schreiben die händisch ein perl-Skript dass dann ASM erzeugt. Also
nutzen quasi perl als Makroassembler. Der Curve25519 Code sah auch nach
handgeschriebenem Zeug aus. Ich finde jetzt djb's Sachen nicht, aber
hier ist ein Beispiel:
https://github.com/msotoodeh/curve25519/blob/master/source/asm64/amd64.masm/Mult.asm
Viele GrĂźĂe,
Johannes
--
"Performance ist nicht das Problem, es läuft ja nachher beides auf der
selben Hardware." -- Hans-Peter Diettrich in d.s.e.
Am 22.08.19 um 00:34 schrieb Johannes Bauer:
Wenn ich Assembler schreibe, kann ich mich immer *jedes* Compilers
bedienen.
Nein. Wenn du Assembler schreibst, dann schreibst du Assembler. Wenn du
einen Compiler Assembler schreiben läĂt, dann kompilierst du. Das
Kompilat handzuoptimieren ist dann noch mal was anderes.
Hm, ich sehe einen Compiler durchaus als Werkzeug, sich Tipps und Ideen
zu holen.
Am Ende kommt zwar immer Assembler raus, aber der Vorgang ist ein
anderer. Jedenfalls, wenn man die Bedeutung von "etwas schreiben" nicht
zur Unkenntlichkeit verbiegen mĂśchte.
Es ist jedenfalls nicht abzustreiten, dass ich selbst in händisch
geschriebenem Assembler zumindest theoretisch die MÜglichkeit hätte,
jeden Compiler zu outperformen. Dass /ich/ das nicht kann und vermutlich
die allermeisten Programmierer ebensowenig, ist schon ein separates Thema.
Fakt ist, dass performance-kritischer Code sich heute immernoch an
Assembler bedient. Sieht man z.B. dutzendfach in OpenSSL. Oder bei djb's
Kryptocode. Oder bei BLAS.
Sicher. Und wie wurde der im Einzelfall erzeugt?
Händisch geschrieben, wenn du dir den anschaust. Bzw bei OpenSSL
schreiben die händisch ein perl-Skript dass dann ASM erzeugt. Also
nutzen quasi perl als Makroassembler. Der Curve25519 Code sah auch nach
handgeschriebenem Zeug aus. Ich finde jetzt djb's Sachen nicht, aber
hier ist ein Beispiel:
https://github.com/msotoodeh/curve25519/blob/master/source/asm64/amd64.masm/Mult.asm
Viele GrĂźĂe,
Johannes
--
"Performance ist nicht das Problem, es läuft ja nachher beides auf der
selben Hardware." -- Hans-Peter Diettrich in d.s.e.