Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
jenny:offenerbereich:digitalesysteme [2025/02/27 07:08] 20.171.207.182 alte Version wiederhergestellt (2024/07/03 16:43) |
jenny:offenerbereich:digitalesysteme [2025/02/27 07:08] (aktuell) 20.171.207.182 alte Version wiederhergestellt (2024/08/21 19:53) |
||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
Hex code 0xDEADBEEF auf den Stack legen dann hat man ein Steak wenn der Prozessor gegrillt wird. | Hex code 0xDEADBEEF auf den Stack legen dann hat man ein Steak wenn der Prozessor gegrillt wird. | ||
- | Stackwert ist 4Byte also immer 32Bit lang und adressiert nur den niederwertige Byte (little | + | Stackwert ist 4Byte also immer 32Bit lang und adressiert nur den niederwertige Byte (little |
====== Rücksprung ====== | ====== Rücksprung ====== | ||
Spezialbefehl für Programmsprünge zum speichern der Rücksprungadresse auf dem Stack ESP | Spezialbefehl für Programmsprünge zum speichern der Rücksprungadresse auf dem Stack ESP | ||
- | Assemblerbefehll: | + | Assemblerbefehll: |
- | | + | |
- | | + | |
- | . | + | |
- | max: todo | + | |
- | . | + | |
- | '' | + | |
- | <note tip> | ||
- | in //libc// | ||
- | .format .asciz 'X = %d\n' ; Formatstring für printf() | ||
- | call printf \\ | ||
- | add esp,8 ; Stackkorrektur für eigene push' | ||
- | </ | ||
- | |||
- | |||
- | |||
- | ====== c Programm ====== | ||
- | <code c> | ||
- | #include " | ||
- | |||
- | int main(void){ | ||
- | int a = 42; | ||
- | // assembler lea eax, [edx,eax] //hack !!! wie a+b | ||
- | printf(" | ||
- | return 0; // Integer 0 gibt an dass diese main() ohne Fehler beendet wurde!!! | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | |||
- | '' | ||
- | Ergebnis hello.s anstatt o.out oder hello unter Linux | ||