Znaczenie @ zero_extendqisi2

Nov 18 2020

Zastanawiałem się, jakie jest rzeczywiste znaczenie @ zero_extendqisi2wyjścia asemblera gcc, a także jego użycia. Nie mogłem znaleźć, co oznacza qisi, ani niczego podobnego.

Dla kontekstu linia jest ldrb r3, [fp, #-9] @ zero_extendqisi2i to jest ARM na Raspberry Pi Zero W, skompilowana za pomocą GCC. Na przykład, podczas ponownego ładowania unsigned charz konwersją na int, z wyłączoną optymalizacją, z GCC9.2 bez opcji.https://godbolt.org/z/7xnfqh. Starsze GCC aż do najwcześniej w Godbolt (4.5) i prawdopodobnie wcześniej wypisują ten sam komentarz.

Odpowiedzi

1 NateEldredge Nov 19 2020 at 14:22

To jest nazwa instrukcji RTL , zawarta na liście nazw standardowych w podręczniku wewnętrznych elementów GCC pod zero_extendmn2. Tutaj m,nsą tryby maszyny qi i si, które są odpowiednio bajt i 32-bitowa liczba całkowita. Jest to więc wskazanie GCC, że generuje instrukcję, która pobiera bajt (tutaj załadowany z pamięci) i rozszerza go na 32-bitową liczbę całkowitą (tutaj w rejestrze r3). Dokładnie to ldrbrobi instrukcja ARM .

Nie wiem, co oznacza 2, ale najwyraźniej jest to część konwencji nazewnictwa GCC.

Jak podkreśla Peter, to trochę dziwne, że GCC bez niego umieściłby taki komentarz w zgromadzeniu -fverbose-asm. Rzeczywiście komentarz jest kodowana w ramach łańcucha szablonu w opisie pliku maszynowego arm.md. Mogła to być pomoc w debugowaniu, którą jakiś programista GCC dodał, a potem zapomniał usunąć.

(Jeśli prześlesz to do swojego zadania, zacytuj ten post poprawnie).