Was bedeutet es, einen Stern vor ein Register zu setzen?

8

Ich untersuche, wie c ++ die richtigen Elementfunktionen über die Assemblersprache aufruft. Das einfache Programm, mit dem ich komme, ist das folgende:

%Vor%

Die Montage ist wie folgt:

%Vor%

meine Fragen sind:

  1. Ich habe google nach nwm gesucht, es sagt mir nur, dass c ++ es benutzt, um Speicher zuzuordnen, Könnte mir jemand mehr darüber erzählen? ist es in einer lib? wenn möglich, kann ich seinen Quellcode bekommen? wie?
  2. Ich bin mit dieser Syntax nicht ganz vertraut, was will sie tun?
Alex 30.09.2013, 06:50
quelle

1 Antwort

11

Das * wird vor absoluten Adressen in AT & amp; T Assembly-Syntax für Aufruf- oder Sprungbefehle verwendet. Dies bedeutet, dass es zu der Adresse springt, die in dem Register enthalten ist. Die Alternative ist ein relativer Sprung, der relativ zur aktuellen Anweisung ist.

Aus dem GNU as Handbuch :

  

AT & amp; T absolut (im Gegensatz zu PC relativ)        Jump / Call-Operanden haben das Präfix '*'; Sie sind unbegrenzt in        Intel-Syntax.

In Ihrem Code ist es sinnvoll, eine Adresse in einem Register anzurufen. Der Aufruf von pA->show() erfordert ein Nachschlagen, um zu sehen, was die richtige Funktion ist, die aufgerufen werden soll. Dies liegt daran, dass es sich bei der Klasse A um eine virtuelle Funktion handelt.

    
Gavin Smith 30.09.2013, 06:59
quelle

Tags und Links