Saya tidak dapat memahami kode perakitan gnu berikut untuk arsitektur powerpc

#define START_GOT \
 .section ".got2","aw";\
.LCTOC1 = .+32768

Apakah .LCTOC1 merupakan sebuah arahan? Mengapa ada . sebelum +32768?


person Zhang Baolei    schedule 16.04.2013    source sumber


Jawaban (1)


. (titik) adalah simbol khusus yang mewakili lokasi saat ini garis sedang berkumpul.

Jadi, ekspresi .+32768 berarti "32 KB dari sini", dan nilai tersebut diberi nama simbolis .LCTOC1.

Perhatikan bahwa arahan .section yang juga ada dalam definisi makro mungkin mengubah nilai ., yaitu lokasi saat ini sejak dimulainya bagian baru yang disebut .got2. Argumen "aw" berarti hanya "dapat ditulis" (a diabaikan).

person unwind    schedule 16.04.2013
comment
Apakah saya benar? .LCTOC1 mendefinisikan simbol .LCTOC1 = .+32768 hanya mengatakan .LCTOC1 sama dengan +32768 - person Zhang Baolei; 16.04.2013
comment
@ZhangBaolei: disetel .LCTOC1 ke (alamat saat ini) + 32768. - person Jeremy Kerr; 07.04.2015