Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
jenny:offenerbereich:digitalesysteme [2025/05/23 17:59] itbs fertig23.Mai |
— (aktuell) | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | wenig Datenmengen im Stack. | ||
- | 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 endien) als SpeicherAdresse zu den Stackpointerregister. | ||
- | |||
- | ====== Rücksprung ====== | ||
- | Spezialbefehl für Programmsprünge zum speichern der Rücksprungadresse auf dem Stack ESP | ||
- | Assemblerbefehll: | ||
- | '' | ||
- | --> diese Folgeadresse landet mit push auf den ESP-Stack | ||
- | . | ||
- | 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!!! | ||
- | } | ||
- | </ | ||
- | |||
- | '' | ||
- | ls oder dir Ergebnis hello.s anstatt o.out oder hello unter Linux | ||
- | |||
- | 23.Mai wiederhergestellt |