2012-03-28 8 views
0

Ich debugge einige Programme. In pro-Anweisung Debuggen (Eclipse-CDT), habe ich über diese kommen:Ist diese Anweisung falsch? (movabs% al, 0xe400000000004049)

movabs %al,0xe400000000004049 
rex.WB 

Nach dem Ausführen der movabs Anweisung, beendet das Debuggen mit SEGV. Ich habe diese Anweisungen gesehen, aus denen die zweite nicht einmal wie eins aussieht, heh.

Könnte nicht dadurch verursacht werden, aber ich frage besser.

Das ist GNU Assembler-Syntax, wie ich unter Linux Gentoo 64bit arbeiten, ist meine CPU Intel 2600K (i7 Sekunde gen).

+4

Das sieht nicht wie ein gültiger Befehlsstrom aus. Versuchen Sie, Daten auszuführen? –

Antwort

-2
0xe400000000004049 

Migth ein wenig zu groß, um in al. auf x86 (32bits) AL (8bits) ist ein Teil von EAX (32bits Register) Also ich vermute (vielleicht falsch), dass auf 64bit arch AL ist 16bits => 0xFFFF max.

+4

AL ist immer noch 8 Bit auf x86_64. Alle Register bleiben gleich groß, sie sind nur Teilansichten der größeren Register rax/rbx/rcx/rdx/rsi/rdi/rsp/rbp/rip. – pmdj

+4

'0xe400000000004049' ist eine Speicheradresse, kein zu speichernder Wert. – interjay

+1

Ok etwas gelernt. Immer doggt die Syntax war 'movabs% al, [0xe400000000004049 ]', warum ich dachte, Sie setzen die 0xe400000000004049 in AL – grifos

6

Die Anweisung

movabs %al,0xe400000000004049 

soll 0xe400000000004049 den Wert von al in der Adresse speichern. Die letztere Adresse ist nicht gültig, da auf aktuellen x86_64-Architekturen die oberen 17 (siebzehn) Adressen entweder alle null oder alle eins sein müssen. Oder anders ausgedrückt, der aktuelle virtuelle Adressraum ist 48 Bit vorzeichenerweitert, also von 0xffff 8000 0000 0000 bis 0x0000 7fff ffff ffff.

Dies kann sich in Zukunft ändern - aber wir werden wahrscheinlich einige Generationen von CPUs kommen und gehen sehen.

+0

Ich weiß, dass der Kernel an der Spitze befindet, Benutzeranwendungen ganz unten, das ist, was Sie versuchen zu sagen. Nun, das ist in der Mitte des gesamten Adressraums, ich weiß. Also: Nevermind – imacake

+1

@imacake Nein, ich versuche zu sagen, die Adresse, die Sie angegeben haben, ist illegal, egal wo der Kernel oder die Anwendungen sind – hirschhornsalz

Verwandte Themen