Benutzer-Werkzeuge

Webseiten-Werkzeuge


jenny:offenerbereich:digitalesysteme

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

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: 
-  ''call max'' ; max ist eine Speicheradresse 
-  --> diese Folgeadresse landet mit push auf den ESP-Stack 
-  . 
-  max: todo 
-  . 
-  ''ret''  ; holt die Speicheradresses von Stack mit pop ESP   
- 
-<note tip> 
-in //libc// 
- 
-.format .asciz 'X = %d\n' ; Formatstring für printf()  .asci 'X = %d\n\0' geht auch!!!! \\ 
-call printf \\  
-add esp,8 ; Stackkorrektur für eigene push' 
-</note> 
- 
- 
- 
-====== c Programm ====== 
-<code c> 
-#include "stdio.h" 
- 
-int main(void){ 
-  int a = 42; 
-  // assembler lea eax, [edx,eax] //hack !!! wie a+b 
-  printf("%i",a) 
-  return 0;  // Integer 0 gibt an dass diese main() ohne Fehler beendet wurde!!! 
-} 
-</code> 
- 
-''gcc hello.c -S -masm=intel''  || -S nur assemblercode erstellen kein Maschinencode wie Executable \\ 
-ls oder dir Ergebnis hello.s anstatt o.out oder hello unter Linux 
- 
-23.Mai wiederhergestellt