====== Kommentare ====== ===== Definition ===== Kommentare sind Beschreibungen des Codes. Sie werden vom Assembler ignoriert und haben keinen weiteren Einfluss auf das Programm. Sie werden beim Assemblieren einfach verworfen und landen auch nicht in der Binärdatei. ===== Gründe ===== Wenn Kommentare keinerlei Einfluss auf die Ausführung haben, wieso werden sie dann als so wichtig angesehen? Das hat mehrere Gründe.\\ Für andere Programmierer ist die Absicht des Autors oft nicht offensichtlich. Kommentare helfen dabei, Code für andere Programmierer verständlich zu machen. Da sich Projekte oft über mehrere Jahre strecken, dienen Kommentare aber auch dazu seinen eigenen Code wieder zu verstehen. Sie helfen also dabei ein Programm wart- und erweiterbar zu halten. ===== Syntax ===== ==== Einzeilige Kommentare ==== Einzeilige Kommentare werden mit einem Semikolon gekennzeichnet. Wie der Name schon sagt enden sie mit einem Zeilenumbruch. mov rax, 4 ; Sycall-Nummer für write() mov rbx, 1 ; Nach stdout schreiben mov rcx, MyString ; Auszugebenden String festlegen mov rdx, MyStringLength ; Länge des Strings angeben ==== Mehrzeilige Kommentare ==== Da die obige Methode bei Block-Kommentaren relativ aufwendig ist, gibt es auch die Möglichkeit Kommentare über mehrere Zeilen zu verteilen, ohne jedes Mal den Semikolon zu schreiben. Dies geschieht mit den Makros ''%comment'' und ''%endcomment''. %comment Ruft den Syscall "write()" auf, um "MyString" auf die Standardausgabe zu schreiben. %endcomment mov rax, 4 mov rbx, 1 mov rcx, MyString mov rdx, MyStringLength ==== Einzeilige und mehrzeilige Kommentare mischen ==== Natürlich können einzeilige und mehrzeilige Kommentare auch beliebig vermischt werden. %comment Ruft den Syscall "write()" auf, um "MyString" auf die Standardausgabe zu schreiben. %endcomment mov rax, 4 mov rbx, 1 mov rcx, MyString mov rdx, MyStringLength ; Newline wird nicht ausgegeben! ===== Sinnvoll kommentieren ===== Einige werden sich jetzt denken: "Je mehr Kommentare, desto besser!". Die Menge an Kommentaren sagt aber nichts über die Qualität der Dokumentation aus. Sehen wir uns folgendes Beispiel an: mov rax, 4 ; rax auf 4 setzen mov rbx, 1 ; rbx auf 1 setzen mov rcx, MyString ; rcx auf MyString setzen mov rdx, MyStringLength ; rdx auf MyStringLength setzen Die obigen Kommentare sagen eigentlich nichts aus. Sie beschreiben das, was jeder Programmierer mit Assembler-Kenntnissen sowieso auf den ersten Blick sieht. Es sollte beschrieben werden, mit welcher Absicht die Anweisungen ausgeführt werden und was sie bedeuten.\\ Viel sinnvoller wäre es wie oben gezeigt: mov rax, 4 ; Sycall-Nummer für write() mov rbx, 1 ; Nach stdout schreiben mov rcx, MyString ; Auszugebenden String festlegen mov rdx, MyStringLength ; Länge des Strings angeben bzw. mit mehrzeiligen Kommentaren: %comment Ruft den Syscall "write()" auf, um "MyString" auf die Standardausgabe zu schreiben. %endcomment mov rax, 4 mov rbx, 1 mov rcx, MyString mov rdx, MyStringLength Ob man zeilen- oder blockweise Kommentiert ist Geschmackssache und jedem selbst überlassen. Durch die sinnvolle Kommentierung des Codes kann er sogar von Programmierern verstanden werden, die Assembler nicht beherrschen.