Seit über dreißig Jahren beschäftige ich mich mit IT-Technologien. Davon die letzten zwanzig
Jahre mit Softwareentwicklung in C, C++ und Assembler x86, x64 für Windows. In dieser Zeit sind
eine Menge Projekte entstanden, wovon ich Teil an diese Stelle veröffentliche.
Zielsetzung meiner Art der Softwareentwicklung ist es sehr schnelle Funktionen zu entwickeln.
Daher ist sie sehr speicherorientiert bzw. hardwarenah und orientiert sich nicht an modernen
Standards wie z.B. C++ 17. Es werden daher nur die Standartdatentypen und Arrays verwendet sowie
die von mir entwickelten Abstract-Data-Types. Auch werden keine Fremdbibliotheken verwendet da diese
immer eine Art Blackbox darstellen. Dies gilt insbesondere für ihre Threadsicherheit. Die Präfixe
vor den Variablennamen sind hilfreich bei der Planung der Registerbreite beim Umschreiben von
C-Funktionen nach Assembler.
Die an dieser Stelle veröffentlichen proprietären Bibliotheken können frei verwendet werden wobei
ich keine Haftung für die Nutzung der Dateien übernehme. Alle Dateien verfügen über meine
Digitale Signatur
und einem Zeitstempel der Veröffentlichung.
Sie sind in NuGet-Packages verpackt. Die Namen der Packages entsprechen auch dem Namespace zu dem sie gehören.
Zusätzlich werden einige Quelltexte, gemäß dem Open-Source-Prinzip veröffentlicht, soweit die
Offenlegung nicht die Sicherheitsstruktur gefährdet. Die Projekte Core und CompSys können daher
nicht offen gelegt werden. Es ist mir aber möglich Teile aus diesen Projekten zu veröffentlichen.
Zum Beispiel das Memorymanagement
und die Crypto-Algorythmen. Da der Quellcode bisher
von mir alleine entwickelt wurde und nicht für eine Veröffentlichung vorgesehen war,
enthält er keine Kommentare.
Die Voraussetzung für den Betrieb der 32bit-Dateien ist ein Prozessor der mindestens die SSE2 und
AES-Instructions beherrscht. Für den Betrieb der 64bit-Dateien ist ein Prozessor notwendig
der mindestens AVX2-Instructions beherrscht. Es werden nur Instructions verwendet die bei
Intel
und
AMD
Prozessoren vorhanden sind.
Folgende Dokumentationen werden für die Entwicklung und Orientierung der gemeinsamen Instructions verwendet.
-
Intel 64 and IA32 Architectures Software Developer´s Manual Volume 1
Reference 253665-072US Mai 2020
-
Intel 64 and IA32 Architectures Software Developer´s Manual Volume 2 (2A, 2B, 2C & 2D)
Reference 325383-072US Mai 2020
-
Intel 64 and IA32 Architectures Software Developer´s Manual Volume 3 (3A, 3B, 3C & 3D)
Reference 325384-072US Mai 2020
-
Intel 64 and IA32 Architectures Optimization Reference Manual - auch für AMD
Reference 248966-043 April 2020
-
Intel Advanced Encryption Standard (AES) New Instrutcion Set - auch für AMD
Reference 323641-001 Revision 3.01 September 2012
-
AMD64 Architecture Programmer´s Manual Volume 1:
Application Programming Publication 24592 Revision 3.22 December 2017
-
AMD64 Architecture Programmer´s Manual Volume 2:
System Programming Publication 24593 Revision 3.35 Mai 2020
-
AMD64 Architecture Programmer´s Manual Volume 3:
General-Purpose and System Instructions Publication 24594 Revision 3.30 April 2020
-
AMD64 Architecture Programmer´s Manual Volume 4:
128-Bit and 256-Bit Media Instructions Publication 26568 Revision 3.24 May 2020
-
AMD64 Architecture Programmer´s Manual Volume 5:
64-Bit Media and x87 Floating-Point Instructions Publication 26569 Revision 3.15 May 2018
In Anbetracht der globalen Verwendung meiner Bibliotheken werde ich nun doch zukünftig in Englisch
schreiben. Die bestehenden Bibliotheken werden ebenfalls schrittweise ins Englische übertragen.
Wer mich in meiner Arbeit unterstützen möchte kann gerne eine Spende in beliebiger Höhe via
PayPal senden https://PayPal.me/devrepag.
Vielen Dank.