| Zeile 4: | Zeile 4: | ||
eb ff | eb ff | ||
Zum ''zweiten'' Byte, also zum ''Parameter'' des Kommandos. Das bedeutet, nach dem Byte "eb" wird das Byte "ff" ausgefuehrt, das "eigentlich" als Parameter gedacht war. Ein solches Konstrukt ist in assembler unmoeglich. Diese Konstrukte wurden jedoch zum Sparen von Speicherplatz eingesetzt. | Zum ''zweiten'' Byte, also zum ''Parameter'' des Kommandos. Das bedeutet, nach dem Byte "eb" wird das Byte "ff" ausgefuehrt, das "eigentlich" als Parameter gedacht war. Ein solches Konstrukt ist in assembler unmoeglich. Diese Konstrukte wurden jedoch zum Sparen von Speicherplatz eingesetzt. | ||
| + | |||
| + | Mit Linux ist es moeglich, assembler in Maschinensprache zu uebersetzen (kompilieren) und umgekehrt (disassemblieren). Ich mache es hier einmal vor. Folgendes Programm beschreibt eine Endlosschleife in Assembler: | ||
| + | |||
| + | '''endless.asm''' | ||
| + | global _start | ||
| + | _start: | ||
| + | nop | ||
| + | jmp _start | ||
| + | |||
| + | zum Uebersetzen in Maschinensprache starten wir: | ||
| + | |||
| + | nasm -f elf64 endless.asm | ||
| + | |||
| + | um das Ganze zu einem unter Linux ausfuehrbaren Programm zu machen geben wir ein: | ||
| + | |||
| + | ld -s -o endless endless.o | ||
| + | |||
| + | Zum disassemblieren geben wir ein: | ||
| + | |||
| + | # objdump -M intel -d endless | ||
| + | |||
| + | endless: file format elf64-x86-64 | ||
| + | |||
| + | |||
| + | Disassembly of section .text: | ||
| + | |||
| + | 0000000000400080 <.text>: | ||
| + | 400080: 90 nop | ||
| + | 400081: eb fc jmp 0x400080 | ||