Ich habe ein Problem mit der x86-Baugruppe (AT & T).Assembler-Segmentierungsfehler auf der Dereferenzierungsregisteradresse
Da ich eine Array-Suche in Assembler implementieren muss ich im Register% ebx das erste Element des Arrays (sagen arr [0]) und um auf arr [1] zum Beispiel zu schreiben, schrieb ich:
mov -4(%ebx), %eax
Das Problem ist, habe ich einen Segmentation Fault, wenn ich versuche, die ebx Adresse zu bekommen, was sehr seltsam ist, weil ich EBX Wert bekommen kann (der Wert von arr [0]) ohne Probleme .. Einige Ratschläge?
EDIT: Ok, ich glaube, ich habe den Fehler verstanden. Wenn ich erkläre die Array Ich habe arr die Adresse des ersten Elements auf die Variable setzen:
mov -4(%ecx), %eax
Aber mit dieser Anweisung habe ich den Wert nicht die Adresse. Also wie kann ich die Adresse setzen?
Können Sie den umgebenden Code zeigen? Ich denke, Sie verstehen etwas falsch, wie Register funktionieren. – DCoder