Saya pertama kali memperhatikan pada tahun 2009 bahwa GCC (setidaknya pada proyek saya dan pada mesin saya) memiliki kecenderungan untuk menghasilkan kode yang lebih cepat jika saya mengoptimalkan untuk ukuran ( -Os) daripada kecepatan ( -O2atau -O3), dan saya telah bertanya-tanya sejak mengapa. Saya telah berhasil membuat kode (agak konyol) …
Saya punya daftar arbitrer. NET rakitan. Saya perlu memeriksa secara terprogram apakah setiap DLL dibangun untuk x86 (sebagai lawan dari x64 atau CPU apa pun). Apakah ini mungkin?
Saya telah membaca tentang divdan muloperasi perakitan, dan saya memutuskan untuk melihatnya beraksi dengan menulis program sederhana di C: Divisi file.c #include <stdlib.h> #include <stdio.h> int main() { size_t i = 9; size_t j = i / 5; printf("%zu\n",j); return 0; } Dan kemudian menghasilkan kode bahasa assembly dengan: gcc …
Latar Belakang: Sambil mengoptimalkan beberapa kode Pascal dengan bahasa assembly yang tertanam, saya melihat MOVinstruksi yang tidak perlu , dan menghapusnya. Yang mengejutkan saya, menghapus instruksi yang tidak perlu menyebabkan program saya melambat . Saya menemukan bahwa menambahkan MOVinstruksi yang sewenang-wenang dan tidak berguna meningkatkan kinerja lebih jauh. Efeknya tidak …
Tautan berikut menjelaskan konvensi sistem panggilan x86-32 untuk UNIX (BSD flavour) & Linux: http://www.int80h.org/bsdasm/#system-calls http://www.freebsd.org/doc/en/books/developers-handbook/x86-system-calls.html Tapi apa konvensi sistem panggilan x86-64 di UNIX & Linux?
Saya yakin saya menemukan bug di GCC saat menerapkan O'Neill's PCG PRNG. ( Kode awal pada Penjelajah Kompiler Godbolt ) Setelah dikalikan oldstatedengan MULTIPLIER, (hasil disimpan dalam rdi), GCC tidak menambahkan hasil itu ke INCREMENT, INCREMENTsebagai gantinya pindah ke rdx, yang kemudian digunakan sebagai nilai pengembalian rand32_ret.state Contoh direproduksi minimum …
Saya ingin menentukan apakah perakitan asli dipenuhi sebagai x64 atau x86 dari aplikasi kode terkelola ( C # ). Saya pikir itu pasti di suatu tempat di header PE karena loader OS perlu mengetahui informasi ini, tetapi saya tidak dapat menemukannya. Tentu saja saya lebih suka melakukannya dalam kode yang …
Rust memiliki integer 128-bit, ini dilambangkan dengan tipe data i128(dan u128untuk int yang tidak ditandatangani): let a: i128 = 170141183460469231731687303715884105727; Bagaimana cara Rust membuat i128nilai - nilai ini bekerja pada sistem 64-bit; misalnya bagaimana cara menghitungnya? Karena, sejauh yang saya tahu, nilai tidak dapat masuk dalam satu register CPU x86-64, …
Dalam Tour Manual Intel x86-64 , saya membaca Mungkin fakta yang paling mengejutkan adalah bahwa instruksi seperti MOV EAX, EBXsecara otomatis nol di atas 32 bit RAXregister. Dokumentasi Intel (3.4.1.1 Register Tujuan Umum dalam Mode 64-Bit dalam Arsitektur Dasar manual) yang dikutip dari sumber yang sama memberi tahu kita: Operand …
Saya memiliki sedikit dilema tentang cara menyiapkan studio visual saya untuk multi-penargetan. Latar belakang: c # .NET v2.0 dengan p / pemanggilan ke pihak ketiga DLL 32 bit, SQL compact v3.5 SP1, dengan proyek Setup. Saat ini, target platform disetel ke x86 sehingga dapat dijalankan di Windows x64. Perusahaan pihak …
AMD memiliki spesifikasi ABI yang menjelaskan konvensi pemanggilan untuk digunakan pada x86-64. Semua OS mengikutinya, kecuali untuk Windows yang memiliki konvensi pemanggilan x86-64 sendiri. Mengapa? Adakah yang tahu alasan teknis, sejarah, atau politik untuk perbedaan ini, atau apakah ini murni masalah NIHsyndrome? Saya memahami bahwa OS yang berbeda mungkin memiliki …
Seperti yang terjadi saat ini, pertanyaan ini tidak cocok untuk format Tanya Jawab kami. Kami berharap jawaban didukung oleh fakta, referensi, atau keahlian, tetapi pertanyaan ini kemungkinan akan mengundang perdebatan, argumen, jajak pendapat, atau diskusi yang diperpanjang. Jika Anda merasa pertanyaan ini dapat diperbaiki dan mungkin dibuka kembali, kunjungi pusat …
Saya mencoba menginstal layanan Windows menggunakan InstallUtil.exe dan mendapatkan pesan kesalahan System.BadImageFormatException: Tidak dapat memuat file atau assembly ' {xxx.exe}' atau salah satu dependensinya. Upaya telah dilakukan untuk memuat program dengan format yang salah. Apa yang memberi? EDIT: (Not by OP) Pesan lengkap diekstrak dari dup mendapatkan lebih banyak hits …
Saya melakukan beberapa pekerjaan penting kinerja di C ++, dan kami saat ini menggunakan perhitungan integer untuk masalah yang secara inheren floating point karena "lebih cepat". Ini menyebabkan banyak masalah yang mengganggu dan menambahkan banyak kode yang mengganggu. Sekarang, saya ingat pernah membaca tentang bagaimana penghitungan floating point sangat lambat …