Ich habe von ASM leider gar keine Ahung, schaue mir gerade ein paar kleine Seiten an um ein bissl die Grundlagen zu verstehen. Ich will nicht wirklich ASM lernen, nur versuchen den Rechner etwas besser zu verstehen. Durch das Thema "threadsicherheit auf multicore" bin ich nun doch dazu gekommen das mal etwas genauer anzuschaeun.
Bisher hab ich wenn ich sowas gesehen habe nur buchstabenwirrwar erkannt. Liegt wohl auch daran, daß ich die hexzahlen nicht lesen kann.
Nun habe ich gelesen das es halt auch anweisungen gibt und register, stacks, aber wohla uch variablen. ich bin zwar schon daran gescheitert selbst variablen in ASM zu erstellen, aber ist auch nicht so wichtig.
Ich will es also erstmal mit vorhandenen PBvariablen versuchen.
Code: Alles auswählen
! inc [v_tt]
aber in diesem bord fand ich normal nur
Code: Alles auswählen
! inc dword[v_tt]
Warum? was ist da drann nun anders?
ich wollte nun MOV dest,src
nutzen um einen geänderten wert auch in ASM in eine andere PBvariable zu kopieren
Code: Alles auswählen
! mov [vt_tt2],[v_tt]
es geht darum später etwas threadsicheres zu basteln, also lock zu verwenden. aber wenn ich über ein register gehe und dann im nächsten Schritt dann wieder in eine Variable schreibe, dann kann dazwischen ja was passieren (anderer thread). ein "lock" nutzt dann auch nicht.
Vielleicht kann mir hier ja mal jemand einen kleinen Beispiecode erstellen der Folgendes beinhaltet:
erstellen einer Variablen (integer .i) in pbcode (Variable1.i)
erstellen einer Variablen (integer) in ASM
eine der Variablen in ASM um eines erhöhen
die erhöhte variable in die andere Variable "reinkopieren".
erhöhen und kopieren bitte nicht in einem schritt (nicht mit dem XCHG falls das gehen würde)
Toshy
[/code]