x86-64 Majelis: Dua register dalam tanda kurung? movsd (%rdx,%rsi,8), %xmm0 [duplikat]

movsd   (%rdx,%rsi,8), %xmm0    ## xmm0 = mem[0],zero

Apa fungsi garis ini? Khususnya (%rdx,%rsi,8)? (komputer arsitektur x86-64) Saya menghasilkan file Majelis dari kode C yang melakukan perkalian matriks, yang melibatkan 3 loop. Saya menemukan banyak manual tetapi tidak ada yang benar-benar memiliki informasi yang dapat dipercaya, bahkan yang terlihat "resmi".

Mac OS X saya memproduksi ini dalam sintaks GAS, jadi mov instruksi variasinya berurutan:

mov source dest

Tapi tidak ada yang menjelaskan apa yang terjadi jika sesuatu seperti (%rdx,%rsi,8) tiba-tiba bergabung dengan pesta.

Tolong bantu saya mempelajari lebih lanjut tentang ini. Terima kasih.

Tautan di bawah, slide 7 adalah informasi paling terkait yang dapat saya temukan (tetapi mungkin dalam sintaks Intel yang sumber dan tujuannya terbalik) https://www.bowdoin.edu/~sbarker/teaching/courses/spring16/its/lectures/lec15.pdf


person Leonard    schedule 20.07.2018    source sumber
comment
Lihat misalnya panduan gas atau trilyunan referensi at&t lainnya termasuk tag sintaksis at&t wiki. Anda juga dapat mengganti kompiler Anda untuk menghasilkan sintaksis intel.   -  person Jester    schedule 20.07.2018
comment
Wow, itu hampir mustahil ditemukan. Terima kasih ! Saya pikir sudah menemukan jawabannya sekarang. Saya tidak mengerti mengapa ada orang yang meremehkan pertanyaan saya tanpa penjelasan apa pun.   -  person Leonard    schedule 20.07.2018
comment
@Leonard Anda mengajukan pertanyaan tentang sintaks suatu bahasa pemrograman tanpa pernah memeriksa referensi untuk bahasa pemrograman tersebut. Itu sebabnya orang-orang tidak menyukai Anda: jika Anda telah mencari dan membaca referensi apa pun untuk sintaksis AT&T, Anda tidak perlu menanyakan pertanyaan ini.   -  person fuz    schedule 21.07.2018
comment
@Leonard: Jika Anda telah mencoba melakukan penelitian tetapi tidak menemukan apa pun, tidak ada yang dapat mengetahuinya kecuali Anda mengatakan sesuatu tentang hal itu. SO mendapat banyak pertanyaan buruk setiap hari dari hal-hal yang (tidak seperti ini) mudah ditemukan di Google, jadi idownvotedbecau.se/noresearch sering kali dibenarkan. Tautan tersebut menjelaskan cara menunjukkan bahwa Anda memang mencoba menemukan jawabannya. Mengklaim bahwa manual resmi tidak memiliki informasi yang dapat dipercaya sepertinya tidak mungkin, kecuali Anda hanya menemukan manual untuk sintaks Intel.   -  person Peter Cordes    schedule 22.07.2018
comment
Tidak. Anda semua hanya berasumsi bahwa saya belum melakukan penelitian, dan sejujurnya itu terasa merendahkan. Ingatlah ini: Seorang pemula adalah seseorang yang tidak mengetahui apa yang tidak diketahuinya. Sekalipun seorang pemula membaca manualnya, seseorang mungkin dapat atau tidak dapat mengidentifikasi informasi yang diperlukan dan membuat hubungan di antara informasi tersebut. Saya melihat dokumentasinya tetapi tidak menemukan apa yang saya butuhkan karena saya tidak cukup berpengetahuan. Itu seharusnya menjadi alasan yang lebih dari cukup bagi saya untuk mengajukan pertanyaan.   -  person Leonard    schedule 26.07.2018
comment
duplikat lain yang lebih mudah ditemukan: Apa arti bilangan heksadesimal, dengan register dalam tanda kurung di Majelis?   -  person phuclv    schedule 09.08.2018


Jawaban (1)


Inilah yang disebut Sintaks AT&T (atau GAS). Ini merupakan alternatif dari sintaks Intel yang lebih populer. Dalam sintaks AT&T, sintaks operan alamat adalah:

segment:displacement(base register, index register, scale factor)

di mana sebagian besar bagian bersifat opsional. Dalam contoh Anda, %rdx adalah register dasar, %rsi adalah register indeks, dan 8 adalah faktor skala.

Apa yang dilakukannya adalah memuat bagian 64-bit bawah dari register xmm0 dari alamat rdx + rsi * 8. Dalam sintaks Intel akan menjadi:

movsd   xmm0, [rdx+rsi*8]

yang sedikit lebih intuitif (setidaknya bagi saya).

person cyco130    schedule 20.07.2018
comment
Terima kasih. Jika Anda bisa, bisakah Anda memberi suara positif pada pertanyaan saya? Bukan untuk popularitas, tapi agar orang lain benar-benar dapat menemukan postingan ini dan mendapatkan bantuan. - person Leonard; 20.07.2018
comment
Seseorang memutuskan untuk memberi suara negatif pada pertanyaan ini tanpa penjelasan, yang sangat tidak sopan, jadi saya khawatir orang lain tidak akan menemukan ini dan mendapatkan bantuan. - person Leonard; 20.07.2018
comment
Lihat Mengapa pemberian masukan tidak wajib pada suara negatif, dan mengapa ide yang menyarankan hal tersebut ditolak? Harapkan juga lebih banyak anonim suara negatif karena Kode Etik yang baru. - person Jester; 20.07.2018
comment
@Leonard pertanyaan ini memiliki 100% duplikat di sini (tapi saya terlalu malas untuk mencarinya ... juga untuk memberi suara negatif kepada Anda karena tidak mencari ... Saya hanya membuat komentar ini JFYI, saya bertanya-tanya mengapa Anda tidak melakukannya temukan saat mencari ... BTW Saya baru saja mencoba untuk bersenang-senang Sintaks operan memori Google x86 at&t -› tautan pertama en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax - ada di sana, poin 4 Sintaks operan alamat ...) (jadi saya rasa Anda tidak dapat menebak kata yang benar, karena jika tidak, Anda harus memeriksanya jenis sensor apa yang diterapkan pada Anda, jika mesin pencari Anda tidak menemukannya) - person Ped7g; 20.07.2018
comment
@ Ped7g Sejujurnya, sulit untuk menemukan info apa pun tanpa mengetahui bahwa itu adalah sintaks AT&T. - person cyco130; 20.07.2018
comment
@ Cyco130 mungkin itu, ditambah bahkan jika Anda sedang mencari sintaks AT&T dan GAS, Anda mungkin masih tidak mengetahui kata-kata seperti operan memori dan sejenisnya... pada dasarnya seseorang yang benar-benar baru dalam perakitan membutuhkan buku atau mentor yang bagus (atau keduanya), atau beberapa tutorial berkualitas tinggi, tapi itu hanya permulaan sebelum membaca beberapa buku bagus dan sebagian besar tutorial mungkin tidak akan cukup membahas istilah-istilah teknis untuk mempersingkatnya... Mungkin sulit untuk menemukan sumber yang bagus. Di situlah stackoverflow.com/tags/x86/info dapat banyak membantu, penuh dengan sumber daya yang terverifikasi. - person Ped7g; 20.07.2018
comment
@ Ped7g Halo Ped7g, menurut saya sangat salah jika berasumsi bahwa saya atau orang yang mengajukan pertanyaan di sini melakukan sedikit atau tanpa penelitian. Salah satu faktor besarnya adalah kesenjangan pengalaman dan pengetahuan. Untuk pemula seperti saya, saya tidak hanya terbiasa dengan sintaksis, tetapi seringkali saya tidak tahu persis istilah mana yang perlu saya gunakan untuk mencari situasi spesifik saya. Bagi orang yang mengetahui konsep dan kata kuncinya mudah untuk menemukannya, tetapi bagi seorang pemula hampir mustahil hanya karena saya tidak mengetahui satu kata kunci tersebut. Saya pikir ini lebih terkait dengan instruksi mov daripada sintaks GAS itu sendiri, - person Leonard; 20.07.2018
comment
@ Ped7g dan ya sementara itu saya berkomentar, orang telah menjawab. Pemula adalah seseorang yang tidak mengetahui apa yang belum diketahuinya. Saya pikir wajar jika seseorang mengajukan pertanyaan setelah melakukan upaya yang masuk akal. (Dan ditambah lagi Anda telah membantu saya sebelumnya, jadi saya rasa Anda tahu bahwa saya tidak terlalu malas :)) - person Leonard; 20.07.2018
comment
@Leonard Saya memahami kebingungan Anda. Saran umum saya untuk pemula adalah: jika Anda ingin belajar suatu bahasa, dapatkan tutorial untuk bahasa tersebut dan kerjakan dari depan ke belakang sebelum mengajukan pertanyaan apa pun. Banyak pertanyaan yang Anda dapatkan selama belajar akan diselesaikan di bagian selanjutnya dari tutorial, banyak tutorial yang suka meninggalkan bagian yang tidak jelas di satu bagian untuk mendapatkan motivasi yang baik untuk memperkenalkan konsep baru di bagian berikutnya. Terutama dengan perakitan, ini adalah cara yang sangat buruk untuk mempelajari konsep dengan memulai dengan cuplikan kode acak dan mencoba mencari tahu sendiri. - person fuz; 21.07.2018
comment
Jadi tolong bantulah diri Anda sendiri dan gunakan tutorial yang tepat. jika Anda hanya mencoba menggabungkannya dengan menyusun cuplikan kode acak dan mencoba memahaminya, Anda mungkin akan memiliki banyak kesalahpahaman dan kesenjangan dalam pemahaman Anda karena Anda akan kesulitan melihat gambaran besarnya. Tolong jangan mencoba belajar seperti ini. Meski membosankan, Anda harus benar-benar mempelajari tutorialnya. - person fuz; 21.07.2018