A
Marc++us schrieb:
Welche Schlüsselwörter müßte man denn einfärben?
Man müsste mindestens alle Registerbezeichnungen einfärben, die mit % Zeichen (inklusive das Zeichen selbst, weiss nicht, wie es besser wäre) eingegeben werden (habe sie grade aus http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/gnu-assembler/i386-regs.html):
%eax, %ebx, %ecx, %edx, %edi, %esi, %ebp, %esp
%ax, %bx, %cx, %dx, %di, %si, %bp, %sp
%ah, %al, %bh, %bl, %ch, %cl, %dh, %dl
%cs, %ds, %ss, %es, %fs, %gs
%cr0, %cr2, %cr3.
%db0, %db1, %db2, %db3, %db6, %db7
%tr6, %tr7
%st(0), %st(1), %st(2), %st(3), %st(4), %st(5), %st(6), %st(7)
%mm0, %mm1, %mm2, %mm3, %mm4, %mm5, %mm6 and %mm7
%xmm0, %xmm1, %xmm2, %xmm3, %xmm4, %xmm5, %xmm6, %xmm7
%rax, %rbx, %rcx, %rdx, %rdi, %rsi, %rbp, %rsp
%r8, %r9, %r10, %r11, %r12, %r13, %r14, %r15
%r8d, %r9d, %r10d, %r11d, %r12d, %r13d, %r14d, %r15d
%r8w, %r9w, %r10w, %r11w, %r12w, %r13w, %r14w, %r15w
%r8b, %r9b, %r10b, %r11b, %r12b, %r13b, %r14b, %r15b
%sil, %dil, %bpl, %spl
%db8, %db9, %db10, %db11, %db12, %db13, %db14, %db15
%xmm8, %xmm9, %xmm10, %xmm11, %xmm12, %xmm13, %xmm14, %xmm15
Dann gibt es Kommentare, die mit # Zeichen beginnen:
mov %eax, %ebx # Das ist ein Kommentar
Es gibt noch eine Reihe von Assembler-Direktiven (s. z.B. hier http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/gnu-assembler/index.html). Im Prinzip, alles Schlüsselwörter, die mit einem Punkt beginnen:
.abort
.ABORT
.align
.ascii
.asciz
.balignw
.balignl
.byte
.comm
.cfi_startproc
.cfi_endproc
.cfi_def_cfa
.cfi_def_cfa_register
.cfi_def_cfa_offset
.cfi_adjust_cfa_offset
.cfi_offset
.cfi_rel_offset
.cfi_window_save
.cfi_escapeexpression
.data
.def
.desc
.dim
.double
.eject
.else
.elseif
.end
.endef
.endfunc
.endif
.equ
.equiv
.err
.exitm
.extern
.fail
.file
.fill
.float
.func
.global
.hidden
.hword
.ident
.if
.incbin
.include
.int
.internal
.irp
.irpc
.lcomm
.lflags
.line
.linkonce
.ln
.mri
.list
.long
.macro
.altmacro
.noaltmacro
.nolist
.octa
.org
.p2alignw
.p2alignl
.previous
.popsection
.print
.protected
.psize
.purgem
.pushsection
.quad
.rept
.sbttl
.scl
.section
.set
.short
.single
.size
.sleb128
.skip
.space
.stabd
.stabn
.stabs
.string
.struct
.subsection
.symver
.tag
.text
.title
.type
.uleb128
.val
.version
.vtable_entry
.vtable_inherit
.weak
.word
Die Konstanten beginnen mit einem $ Zeichen:
movl $0xABCDEF00, %eax
movl $SomeVariable, %ecx
Dann gibt es ein Paar Präfixe für die ganzen Befehle, die u.a. Speicher lesen/schreiben, irgendwelche Operanden benutzen usw.: b (byte 8 Bit), w (word 16 Bit), l (long 32 bit) und q (quad 64 Bit). So kann z.B. der Befehl mov so aussehen (je nach Kontext):
mov
movb
movw
movl
movq
Oder analog der Befehl inc:
inc
incb
incw
incl
Die Sprungmarken sind im Prinzip wie in anderen Assemblern. Man kann aber noch zusätzlich die Zahlen 0...9 allein (als nur lokale sichtbare Marken) verwenden mit dem Präfix b (für back) oder f (für forward):
jmp CooleStelle
CooleStelle:
...
0:
jmp 0b # Spring zurück (0 back) auf die Marke 0
jmp 0f # Spring vorwärts (0 forward) auf die Marke 0
0:
Hoffe, habe das wichtigste aufgelistet...