MultiThreading in Assembler
-
wie wäre denn die funktion unter win7 ? :o
-
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üßeja 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"