MultiThreading in Assembler



  • Ist es möglich in Assembler MultiThreading zu betreiben?
    Also ich weiß ds es ja irgendwie möglich sein muss x) aber ich habe ja von Assembler keine Ahnung, ich denke halt das es ein ziemlicher schreibaufwand ist..

    wenn einer ein beispielcode zur verfügung hat oder ein link zu diesen thema so wäre es hilfreich ihn zu posten, danke 😃



  • das ist ganz einfach: entsprechende Funktionen des Betriebssystem benutzen.



  • wie wäre denn die funktion unter win7 ? :o



  • CreateThread()

    include \masm32\include\masm32rt.inc ; www.masm32.com
    .code
    thread proc param:LPVOID
    
    	print "thread 2",13,10
    
    	invoke ExitThread,123
    
    thread endp
    
    main proc
    LOCAL id:DWORD
    LOCAL hThread:HANDLE
    
    	; create thread
    	invoke CreateThread,0,0,thread,0,0,ADDR id
    	mov hThread,eax
    
    	print "main-thread",13,10
    
    	invoke WaitForSingleObject,hThread,INFINITE
    
    	inkey
    	invoke ExitProcess,0
    
    main endp
    end main
    


  • Schwach... In dem Beispiel ist ja noch ein Mnemonic. :p



  • lol...
    eine Lösungsvariante wäre für das Verschwinden des Mnemonics vielleicht
    ein paarmal DB...b für u.a. auch für die "invokes" damit das ganze nicht so auffällt...und sähe dann auch viel stylischer aus, und nicht so skrippt-kiddy-mäßig...



  • Wenn man sich die 600 Seiten des Intel programer manuals durchließt , oder ein equi von AMD, bekomt man das auch ohne OS API hin... 🙂

    bei mir ist es aber an dem zeitaufwand gescheitert..

    grüße



  • zeusosc schrieb:

    Wenn man sich die 600 Seiten des Intel programer manuals durchließt , oder ein equi von AMD, bekomt man das auch ohne OS API hin... 🙂

    Erklär doch bitte mal, wie genau das ohne Syscall funktionieren soll. Ich bin gespannt...

    Das Intel Manual hilft dir vielleicht, wenn du Threads in deinem eigenen OS Kernel implementieren willst. Wenn du unter Windows im Userspace Threads verwenden willst, gibt's keine sinnvolle Alternative zur entsprechenden API....



  • zeusosc schrieb:

    Wenn man sich die 600 Seiten des Intel programer manuals durchließt , oder ein equi von AMD, bekomt man das auch ohne OS API hin... 🙂

    bei mir ist es aber an dem zeitaufwand gescheitert..
    grüße

    ja weil es nicht geht 😃 ! Threads sind OS-Sache.



  • PhilippHToner schrieb:

    ja weil es nicht geht 😃 ! Threads sind OS-Sache.

    Ich wette das es geht aber der Aufwand extrem hoch ist.

    Man kann doch auch im Kernelmode programmieren, selbst User Mode Anwendungen können auf Ring 0 laufen. Auf Code Project gibts dazu einen Artikel.



  • uLowlevel schrieb:

    PhilippHToner schrieb:

    ja weil es nicht geht 😃 ! Threads sind OS-Sache.

    Ich wette das es geht aber der Aufwand extrem hoch ist.

    Dann bitte mal her mit dem Vorschlag, wie man ohne Manipulation oder Nutzung des laufenden OS eine eigenen Thread scheduler aufzieht.



  • Die Thread Kommunikation ist kein Problem ohne OS API (zumindest auf x86 mit atomaren Befehlen)

    Zum starten eines zweiten Threads kommt man jedoch nicht um die OS API herum. Threads und Prozesse sind Konzepte welche erst dadurch aufkamen, dass ein OS die Verwaltung von Prozessorzeit übernommen hat. Und sich so Programme einen CPU "teilen" können. Möchte man dieses selber machen müsste man das OS komplett aushebeln.

    aka: "eigenes Betriebssystem machen"


Anmelden zum Antworten