di bawah intel saya tahu saya bisa melihat hasilnya uname -m
untuk mengetahui apakah OS saya 32 atau 64 bit, tetapi di bawah ARM ini memberi:
armv7l
Saya menyimpulkan dari
file /usr/bin/ls
bahwa saya menggunakan OS 32-bit, tetapi bagaimana saya bisa tahu ini dengan cara yang lebih mudah?
ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic.
- wikipediauname -a
dangcc -v
? Itu mungkin membantu.Announced October 2011, ARMv8-A (often called ARMv8 although not all variants are 64-bit such as ARMv8-R) represents a fundamental change to the ARM architecture. It adds a 64-bit architecture, named "AArch64", and a new "A64" instruction set. AArch64 provides user-space compatibility with ARMv7-A ISA, the 32-bit architecture, therein referred to as "AArch32" and the old 32-bit instruction set, now named "A32" ARM announced their Cortex-A53 and Cortex-A57 cores on 30 October 2012.
- en.wikipedia.org/wiki/ARM_architecture#64.2F32-bit_architectureJawaban:
Ada beberapa gradasi, karena Anda dapat menjalankan sistem operasi 32-bit atau campuran pada CPU berkemampuan 64-bit. Lihat kernel 64-bit, tetapi semua proses menjalankan ELF 32-bit yang dapat dijalankan, bagaimana ini? untuk diskusi terperinci (ditulis untuk x86, tetapi sebagian besar berlaku untuk mempersenjatai juga).
Anda dapat menemukan model prosesor di
/proc/cpuinfo
. Sebagai contoh:ARMv7 (dan di bawah) adalah 32-bit. ARMv8 memperkenalkan set instruksi 64-bit.
Jika Anda ingin melihat apakah sistem Anda mendukung binari 64-bit, periksa arsitektur kernel:
Pada prosesor 64-bit, Anda akan melihat string dimulai dengan
armv8
(atau di atas) jikauname
proses itu sendiri adalah proses 32-bit, atauaarch64
jika itu proses 64-bit. (Lihat juga https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )sumber
cat /proc/$$/maps
akan memberi tahu Anda apakah sistemnya 64-bit atau 32-bit dari baris perintah adb.armv7l
meskipun ARMv8-nya. Jadi saya cukup yakin CPU yang salah akan dilaporkan.armv7l
, itu berarti Anda menjalankan kernel 32-bit. Anda dapat menjalankan kernel 32-bit pada CPU 64-bit. Jika Anda ingin informasi tentang CPU, baca/proc/cpuinfo
.Seperti yang ditunjukkan oleh richard,
armv7
varian semuanya 32-bit, jadi tidak ada label yang berlebihanarmv7-32
, dll.Pada sistem linux, Anda dapat dengan mudah, meskipun tidak benar-benar definitif, memeriksa dengan memeriksa executable umum:
Saya katakan "tidak definitif" karena dimungkinkan untuk menjalankan executable 32-bit pada sistem 64-bit.
Tampaknya tidak ada sesuatu yang sangat mudah di dalam
/proc
atau/sys
; output dari/proc/cpuinfo
dapat memberikan beberapa petunjuk signifikan. Jika karena alasan tertentu Anda memerlukan pemeriksaan otomatis, membuat tabel yang dipetakan ke bidang "nama model" sepertinya merupakan salah satu metode yang mungkin terdengar (bidang lainnya, termasuk "model", "keluarga cpu", dll. Terlihat opsional - tidak ada) t muncul sama sekali bagi saya pada prosesor Broadcom 2708 ARMv6).sumber
Instal paket 'lshw'.
sumber
Sepertinya sebagian besar cara untuk melihat jumlah bit adalah entah bagaimana mengetahui bahwa arm7 = 32 bit dan sementara itu mungkin benar tetapi bagaimana
Dan jika Anda ingin mencari model cpu saya biasanya menggunakan lengkungan
sumber
Coba yang berikut ini.
Ukuran alamatnya adalah
void*
.sumber
sizeof
mengembalikansize_t
yang harus dicetak menggunakan%zu
. Menggunakan format specifier yang salah memunculkan perilaku yang tidak terdefinisiTidak, itu komputer 64-bit. Ini adalah Allwinner H8, penyihir adalah ARM-7 ganda. 8 core, 64 bit, powervr, sgx 544, dengan kecepatan ganda (700mhz).
Jadi tidak, itu mampu menjadi 64 bit. Hanya OS mungkin 32.
sumber