Arti @ zero_extendqisi2

Nov 18 2020

Saya bertanya-tanya apa arti sebenarnya dari @ zero_extendqisi2output perakitan gcc dan juga penggunaannya. Saya tidak dapat menemukan apa kepanjangan dari qisi atau apa pun di sepanjang garis itu.

Untuk konteksnya, barisnya adalah ldrb r3, [fp, #-9] @ zero_extendqisi2dan ini ARM pada Raspberry Pi Zero W, yang dikompilasi dengan GCC. Misalnya, saat memuat ulang unsigned chardengan konversi ke int, dengan pengoptimalan dinonaktifkan, dengan GCC9.2 tanpa opsi.https://godbolt.org/z/7xnfqh. GCC lama hingga yang paling awal di Godbolt (4.5) dan mungkin sebelumnya mencetak komentar yang sama.

Jawaban

1 NateEldredge Nov 19 2020 at 14:22

Ini adalah nama instruksi RTL , termasuk dalam daftar Nama Standar dari manual internal GCC di bawah zero_extendmn2. Berikut m,nadalah mode mesin qi dan si, yang masing-masing merupakan byte dan integer 32-bit. Jadi ini adalah indikasi GCC bahwa itu menghasilkan instruksi yang mengambil byte (di sini dimuat dari memori) dan zero-extends menjadi integer 32-bit (di sini di register r3). Itulah yang dilakukan oleh ldrbinstruksi ARM .

Saya tidak tahu untuk apa 2 itu, tetapi tampaknya itu bagian dari konvensi penamaan GCC.

Seperti yang ditunjukkan Peter, agak aneh bahwa GCC akan menyertakan komentar seperti itu di majelis tanpa -fverbose-asm. Memang, komentar dikodekan sebagai bagian dari string template di file deskripsi mesin arm.md,. Ini bisa menjadi bantuan debugging yang ditambahkan oleh beberapa pengembang GCC dan kemudian lupa untuk mengeluarkannya.

(Jika Anda mengirimkan ini untuk tugas Anda, harap kutip posting ini dengan benar.)