рука 7 является 32-битной. ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic.- Википедия
ctrl-alt-delor
@ Richard Я так и думал, но тогда как называется 64-битный вариант?
Крис Мэйс
1
У меня нет доступа к машине ARM, но каковы результаты uname -aи gcc -v? Это может быть полезно.
Terdon
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_architecture
ctrl-alt-delor
Arm был последним из 32-битных процессоров, которые стали 64-битными (исключая тех, кто умер). Большинство перешло на 64-битную версию, а затем умерло из-за плохого маркетинга - предполагая, что лучше быть достаточно. Intel x86 был вторым по продолжительности, хотя это была AMD, которая добавила 64 бит.
Ctrl-Alt-Delor
Ответы:
75
Существует несколько градаций, поскольку вы можете запускать 32-битную или смешанную операционную систему на 64-битном процессоре. Посмотрите 64-битное ядро, но все 32-битные исполняемые ELF-процессы, как это? для подробного обсуждения (написано для x86, но большая часть относится и к arm).
Вы можете найти модель процессора в /proc/cpuinfo. Например:
Я не оспариваю ваш ответ, но, к сожалению, android - это LINUX, так что, предположим, есть какая-то команда, ГДЕ-ТО, которая показывает его локально и не читает документацию на какой-то странице
THESorcerer
1
@THESorcerer Android использует ядро Linux, но это не система Linux. У него нет пользовательских инструментов Linux (только очень небольшое подмножество). На Android, я думаю, что поддержка 64-битной операционной системы в базовой ОС является постоянной, поэтому cat /proc/$$/mapsвы сможете узнать, является ли система 64-битной или 32-битной из командной строки adb.
Жиль "ТАК, перестань быть злым"
3
Я полагаю, что Raspberry Pi 3, который является ARMv8 (CRC, без дополнительного Crypto), сообщит, armv7lдаже если его ARMv8. Так что я уверен, что о неправильном процессоре будет сообщено.
1
@jww Если он сообщает armv7l, это означает, что вы используете 32-битное ядро. Вы можете запустить 32-битное ядро на 64-битном процессоре. Если вам нужна информация о процессоре, прочитайте /proc/cpuinfo.
Жиль "ТАК - перестань быть злым"
uname -m просто возвращает "aarch64". / proc / cpuinfo также не всегда содержит имя для процессора.
Halsafar
23
Как указывает Ричард, armv7все варианты 32-битные, поэтому нет избыточной метки armv7-32и т. Д.
В системе linux вы можете легко, хотя и не совсем точно, проверить, изучив общий исполняемый файл:
> which bash
/bin/bash
> file /bin/bash
/bin/bash: ELF 32-bit LSB executable, ARM, version 1 (SYSV) ...
Я говорю «не окончательно», потому что можно запускать 32-битные исполняемые файлы в 64-битной системе.
Там, кажется, нет ничего надежного в /procили /sys; вывод из /proc/cpuinfoможет предоставить некоторые важные подсказки. Если по какой-либо причине вам нужна автоматическая проверка, создание таблицы, сопоставленной с полем «имя модели», кажется одним из потенциально надежных методов (другие поля, включая «модель», «семейство процессоров» и т. Д. Выглядят необязательными - они не у меня вообще нет процессора Broadcom 2708 ARMv6).
Похоже, что большинство способов увидеть количество битов - это знать, что arm7 = 32 бит, и хотя это может быть правдой, но как насчет
pi@rpi9:~ $ getconf LONG_BIT
32
И если вы хотите искать модель процессора, я обычно использую арку
root@rpi4:~# tr '\0' '\n' </proc/device-tree/model;arch
Raspberry Pi Model B Rev 2
armv6l
pi@rpi9:~ $ tr '\0' '\n' </proc/device-tree/model;arch
Raspberry Pi 3 Model B Rev 1.2
armv7l
где вы обнаружили, что ОП использует Allwinner H8? Архитектура armv7l, которая явно не является 64-битной
phuclv
Лучше продемонстрировать способ поиска нужной информации внутри системы, а не использовать стороннюю информацию из внешних источников. Это лучше подходит, чтобы быть комментарием, чем ответом (следовательно, все отрицательные голоса).
ARMv8-A architecture, announced in October 2011,[6] adds support for a 64-bit address space and 64-bit arithmetic.
- Википедияuname -a
иgcc -v
? Это может быть полезно.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_architectureОтветы:
Существует несколько градаций, поскольку вы можете запускать 32-битную или смешанную операционную систему на 64-битном процессоре. Посмотрите 64-битное ядро, но все 32-битные исполняемые ELF-процессы, как это? для подробного обсуждения (написано для x86, но большая часть относится и к arm).
Вы можете найти модель процессора в
/proc/cpuinfo
. Например:ARMv7 (и ниже) является 32-битным. ARMv8 представляет 64-битный набор команд.
Если вы хотите узнать, поддерживает ли ваша система 64-битные двоичные файлы, проверьте архитектуру ядра:
На 64-битном процессоре вы увидите строку, начинающуюся
armv8
(или выше), если самuname
процесс является 32-битным илиaarch64
64-битным процессом. (См. Также https://stackoverflow.com/questions/45125516/possible-values-for-uname-m )источник
cat /proc/$$/maps
вы сможете узнать, является ли система 64-битной или 32-битной из командной строки adb.armv7l
даже если его ARMv8. Так что я уверен, что о неправильном процессоре будет сообщено.armv7l
, это означает, что вы используете 32-битное ядро. Вы можете запустить 32-битное ядро на 64-битном процессоре. Если вам нужна информация о процессоре, прочитайте/proc/cpuinfo
.Как указывает Ричард,
armv7
все варианты 32-битные, поэтому нет избыточной меткиarmv7-32
и т. Д.В системе linux вы можете легко, хотя и не совсем точно, проверить, изучив общий исполняемый файл:
Я говорю «не окончательно», потому что можно запускать 32-битные исполняемые файлы в 64-битной системе.
Там, кажется, нет ничего надежного в
/proc
или/sys
; вывод из/proc/cpuinfo
может предоставить некоторые важные подсказки. Если по какой-либо причине вам нужна автоматическая проверка, создание таблицы, сопоставленной с полем «имя модели», кажется одним из потенциально надежных методов (другие поля, включая «модель», «семейство процессоров» и т. Д. Выглядят необязательными - они не у меня вообще нет процессора Broadcom 2708 ARMv6).источник
Установите пакет 'lshw'.
источник
Похоже, что большинство способов увидеть количество битов - это знать, что arm7 = 32 бит, и хотя это может быть правдой, но как насчет
И если вы хотите искать модель процессора, я обычно использую арку
источник
Попробуйте следующее.
Размер адреса есть
void*
.источник
sizeof
возвращает,size_t
которые должны быть распечатаны с использованием%zu
. Использование неправильного спецификатора формата вызывает неопределенное поведениеНет, это 64-битный компьютер. Это Allwinner H8, ведьма - двойной ARM-7. 8 ядер, 64 бита, powervr, sgx 544, с удвоенной скоростью (700 МГц).
Так что нет, он может быть 64-битным. Просто ОС может быть 32.
источник