[x86 ASM] Varför gör inte mov som jag vill?

Permalänk
Medlem

[x86 ASM] Varför gör inte mov som jag vill?

Hej

Jag sitter och sliter med en Assembleruppgift, men det blir inte riktigt som jag tänkt mig.
Problemet är att jag använder instruktionen movl för att kopiera en adress till en buffer till tre olika variabler i rad, men värdena blir lustiga efter den första movl-instruktionen.

.data Buffer: .space 80 SPos: .word 0 # Starting position in buffer CPos: .word 0 # Current position in buffer LPos: .word 0 # Last position in buffer .text [...] movl $Buffer, SPos movl $Buffer, CPos movl $Buffer, LPos

Om jag sedan skriver ut de tre olika variablerna så har de helt olika värden, som inte stämmer. Tar jag bort de två sista movl-instruktionerna så fungerar det. Jag trodde att movl bara kopierar ett värde, dvs. att Buffer borde vara oförändrad. Har jag tänkt fel?

Visa signatur

"The devil will find work for idle hands to do."

Permalänk

mov flyttar väl ändå saker?

Permalänk
Medlem

Kanske kan det vara så att movl = move long =32 bitar men dina variabler är bara 16 bitar?

Visa signatur

www.filipsprogram.tk - lite freeware
"Delight, herregud. Talang är bara förnamnet."

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Delight
Kanske kan det vara så att movl = move long =32 bitar men dina variabler är bara 16 bitar?

Ja självklart. Tack! Ett word = 16 bitar. Jag bytte ut mina words mot longs och nu fungerar det. Lustigt att inte assemblern gnäller, men den kanske bara ser en variabel utan specifik storlek? Det gäller att passa sig.

Visa signatur

"The devil will find work for idle hands to do."