Фкр64

This comment has been deleted due to a violation of our Code of Conduct. The comment was manually reported or identified through automated detection before action was taken. Please refer to our Code of Conduct for more information.

Bad title

The requested page title is invalid. It may be empty, contain unsupported characters, or include a non-local or incorrectly linked interwiki prefix. You may be able to locate the desired page by searching for its name (with the interwiki prefix, if any) in the search box.

Possible causes are:

  • an attempt to load a URL such as https://en.wikipedia.org/wiki/| (the | character is unsupported);
  • an attempt to load a URL pointing to a «non-local» interwiki page (usually those not run by the Wikimedia Foundation). For example, the URL https://en.wikipedia.org/wiki/meatball:WikiPedia will give this error, because the «meatball:» interwiki prefix is not marked as local in the interwiki table. Certain interwiki prefixes are marked as local in the table. For example, the URL https://en.wikipedia.org/wiki/meta:Main_Page can be used to load meta:Main_Page. All interlanguage prefixes are marked as local, and thus URLs such as https://en.wikipedia.org/wiki/fr:Accueil will work as expected. However, non-local interwiki pages can still be accessed by interwiki linking or by entering them in the search box. For example [[meatball:WikiPedia]] can be used on a page, like this: meatball:WikiPedia.

Retrieved from «https://en.wikipedia.org/wiki/Special:Badtitle»

  • Privacy policy
  • About Wikipedia
  • Disclaimers
  • Contact Wikipedia
  • Code of Conduct
  • Developers
  • Statistics
  • Cookie statement
  • Mobile view

Bad title

The requested page title is invalid. It may be empty, contain unsupported characters, or include a non-local or incorrectly linked interwiki prefix. You may be able to locate the desired page by searching for its name (with the interwiki prefix, if any) in the search box.

Possible causes are:

  • an attempt to load a URL such as https://en.wikipedia.org/wiki/| (the | character is unsupported);
  • an attempt to load a URL pointing to a «non-local» interwiki page (usually those not run by the Wikimedia Foundation). For example, the URL https://en.wikipedia.org/wiki/meatball:WikiPedia will give this error, because the «meatball:» interwiki prefix is not marked as local in the interwiki table. Certain interwiki prefixes are marked as local in the table. For example, the URL https://en.wikipedia.org/wiki/meta:Main_Page can be used to load meta:Main_Page. All interlanguage prefixes are marked as local, and thus URLs such as https://en.wikipedia.org/wiki/fr:Accueil will work as expected. However, non-local interwiki pages can still be accessed by interwiki linking or by entering them in the search box. For example [[meatball:WikiPedia]] can be used on a page, like this: meatball:WikiPedia.

Retrieved from «https://en.wikipedia.org/wiki/Special:Badtitle»

  • Privacy policy
  • About Wikipedia
  • Disclaimers
  • Contact Wikipedia
  • Code of Conduct
  • Developers
  • Statistics
  • Cookie statement
  • Mobile view

4 answers

Sort by: Most helpful
Most helpful Newest Oldest
Fay Wang — MSFT 5,211 Reputation points
2020-02-27T06:37:03.923+00:00

Hello,​ ​Welcome to our Microsoft Q&A platform! Like x86 and x64, ARM is a different processor (CPU) architecture. The ARM architecture is typically used to build CPUs for a mobile device, ARM64 is simply an extension or evolution of the ARM architecture that supports 64-bit processing. Devices built on the ARM64 architecture include desktop PCs, mobile devices, and some IoT Core devices (Rasperry Pi 2, Raspberry Pi 3, and DragonBoard). For example the Microsoft HoloLens 2 uses an ARM64 processor. About the architectures, you can refer to this document.

8 comments Show comments for this answer Report a concern
Meghan 1 Reputation point
2021-04-05T18:00:31.817+00:00
Does your computer tell you if it it uses ARM or not?
0 votes Report a concern
Matt DeLong 21 Reputation points
2021-04-12T18:13:17.977+00:00

Yes. If you go to System Information, under «System Summary», the «System Type» will have ARM in it. For example, ARM64-based PC. If it is not ARM, it will say something like x64-based PC.

4 votes Report a concern
Gauri Shankar Badola 31 Reputation points
2021-04-13T22:02:15.43+00:00

Maybe a little bit of correction on x86 and x64.
Both x86 and x64 are same CPU architecture. HOW? x86 is a «CPU» architecture which was initially used with 16bit «chip» and later on extended to be used on 32 bit chip. For most of the time, we used a 32bit chip(each number represented with 32 bits) that had x86 architecture. So basically, when we said this computer (CPU) is x86, it meant 32 bit or vice versa and same with OS, if an OS was 32bit, then it meant it was running x86 CPU architecture chip. (I’m not considering ARM here) Now, due to the limitation of memory usage with 32bit chip that it can only support 4GB of RAM, x86 was then extended to be used on 64 bit chip, so basically now the same architecture (instructions set) was used to build a chip that used 64bit to represent a number, hence 64bit chip. Initially it was called x86-64 and later reduced to x64 which meant that x86 is the architecture on a 64bit chip.

Most Used Categories

  • Windows (3,800)
  • News (2,152)
  • Features (1,280)
  • Apps (595)
  • Microsoft (291)
  • Games (262)
  • Desktop Fun (248)
  • Devices (175)
  • Internet (137)
  • Videos (114)

Try looking in the monthly archives. 🙂

Bad title

The requested page title is invalid. It may be empty, contain unsupported characters, or include a non-local or incorrectly linked interwiki prefix. You may be able to locate the desired page by searching for its name (with the interwiki prefix, if any) in the search box.

Possible causes are:

  • an attempt to load a URL such as https://en.wikipedia.org/wiki/| (the | character is unsupported);
  • an attempt to load a URL pointing to a «non-local» interwiki page (usually those not run by the Wikimedia Foundation). For example, the URL https://en.wikipedia.org/wiki/meatball:WikiPedia will give this error, because the «meatball:» interwiki prefix is not marked as local in the interwiki table. Certain interwiki prefixes are marked as local in the table. For example, the URL https://en.wikipedia.org/wiki/meta:Main_Page can be used to load meta:Main_Page. All interlanguage prefixes are marked as local, and thus URLs such as https://en.wikipedia.org/wiki/fr:Accueil will work as expected. However, non-local interwiki pages can still be accessed by interwiki linking or by entering them in the search box. For example [[meatball:WikiPedia]] can be used on a page, like this: meatball:WikiPedia.

Retrieved from «https://en.wikipedia.org/wiki/Special:Badtitle»

  • Privacy policy
  • About Wikipedia
  • Disclaimers
  • Contact Wikipedia
  • Code of Conduct
  • Developers
  • Statistics
  • Cookie statement
  • Mobile view

The AArch64 processor (aka arm64), part 1: Introduction

The 64-bit version of the ARM architecture is formally known as AArch64. It is the 64-bit version of classic 32-bit ARM, which has been retroactively renamed AArch32. Even though the architecture formally goes by the name AArch64, many people (including Windows) call it arm64. Even more confusing, the instruction set is called A64. (The 32-bit ARM instruction sets have also been retroactively renamed: Classic ARM is now called A32, and Thumb-2 is now called T32.) AArch64 differs from AArch32 so much that I’m going to cover it fresh rather than treating it as an extension of AArch32. That said, I will nevertheless call out notable points of difference from AArch32. No more Thumb mode AArch64 is an extension of the classic ARM instruction set, not an extension of Thumb-2. So we’re back to fixed-size 32-bit instructions (aligned on 4-byte boundaries). No more gymnastics with low registers and high registers, or using non-intuitive instructions to avoid a 32-bit encoding, or remembering to set the bottom bit on code addresses to avoid accidentally switching into classic mode. A note for those familiar with the classic ARM instruction set: One thing that did not get carried forward was arbitrary predication. The answers to this StackOverflow question dig into the reasons why predication was removed. Short version: Predication is rarely used, it consumes a lot of opcode space, it doesn’t interact well with out-of-order execution, and branch prediction is almost as good. Data sizes The architectural terms for data sizes are the same as AArch32.

TermSize
byte8 bits
halfword16 bits
word32 bits
doubleword64 bits

The processor supports both big-endian and little-endian operation. Windows uses it exclusively in little-endian mode. AArch64 lost the Aarch32 SETEND instruction for switching endianness from user mode. Not that Windows supported it anyway. Registers Everything has doubled. The general-purpose registers are now 64 bits wide instead of 32. And the number of such registers has doubled from 16 to 32 okay just 31. The encoding that would correspond to register 31 has been reused for other purposes. So not quite doubled.

RegisterPreserved?Notes
x0NoParameter 1, return value
x1NoParameter 2
x2NoParameter 3
x3NoParameter 4
x4NoParameter 5
x5NoParameter 6
x6NoParameter 7
x7NoParameter 8
x8No
x9No
x10No
x11No
x12No
x13No
x14No
x15No
x16 ( xip0 )VolatileIntra-procedure call scratch register
x17 ( xip1 )VolatileIntra-procedure call scratch register
x18 ( xpr )read-onlyTEB
x19Yes
x20Yes
x21Yes
x22Yes
x23Yes
x24Yes
x25Yes
x26Yes
x27Yes
x28Yes
x29 ( fp )Yesframe pointer
x30 ( lr )Nolink register
register “31” usually represents sp or zr , depending on instruction

The link register is architectural; the rest are convention. You can refer to the least significant 32 bits of each 64-bit register by changing the leading x to a w , so we have w0 through w30 . If an instruction targets a w register, the result is zero-extended to fill the x register.¹ Particularly notable is that the stack pointer sp and program counter pc are no longer general-purpose registers, like they were in AArch32. The registers still exist, but they are treated as special registers rather than being encoded in the same way as the other general-purpose registers. In AArch64, the pc special register reads as the address of the instruction being executed, rather than being four bytes ahead, as it was in AArch32. The extra +4 in AArch32 was an artifact of the internal pipelining of the original ARM and became a backward compatibility constraint even as the pipeline depth changed. Windows requires that the stack remain 16-byte aligned, and it enables hardware enforcement of this requirement. The 32-bit subregister of sp is called wsp , although it is of no practical use. (The 64-bit register is still called sp , not xsp . Go figure.) There is a 16-byte red zone below the stack pointer, but it’s reserved for code analysis. Intrusive profilers inject assembly language fragments into compiled code to update profiling information, and they need some space to store two registers so they can free up some registers to do their profiling work. The xip0 and xip1 registers are volatile because they are used to assist with branch instructions that try to branch to an address that is out of range. We’ll see later that these registers are also used by function prologues and epilogues. There is a new xzr pseudo-register (and its 32-bit alias wzr ) which reads as zero, and writes are ignored. As I noted in the above table, if an instruction encodes a register number of 31, then a special behavior kicks in, typically by treating mythical register 31 as an alias for sp or zr . Generally speaking, when being used as a base address register, imaginary register 31 represents sp , but when used for arithmetic or as a destination register, it represents zr .² In instruction descriptions, I will use these shorthands:

ShorthandMeaning
XnAny x# register
Xn/zrAny x# register or xzr
Xn/spAny x# register or sp
WnAny w# register
Wn/zrAny w# register or wzr
Wn/spAny w# register or wsp
RnAny x# or w# register
Rn/zrAny x# register, w# register, xzr or wzr

The floating point registers have been reorganized. They have doubled in size (to 128 bits) as well as in number, and the single-precision registers are no longer paired up.

RegisterPreserved?Notes
v0NoParameter 1, return value
v1NoParameter 2
v2NoParameter 3
v3NoParameter 4
v4NoParameter 5
v5NoParameter 6
v6NoParameter 7
v7NoParameter 8
v8 through v15Low 64 bits onlyUpper 64 bits are not preserved
v16 through v31No

Each floating point register can be viewed in multiple ways. The partial registers are stored in the least significant bits of the full register.

NameMeaningNotes
v#SIMD vector
q#128-bit valuequad precision
d#64-bit valuedouble precision
s#32-bit valuesingle precision
h#16-bit valuehalf precision
b#8-bit value

The flags register is formally known as the Application Program Status Register (APSR). The flags available to user mode are the same as in AArch32:

MnemonicMeaningNotes
NNegativeSet if the result is negative
ZZeroSet if the result is zero
CCarryMultiple purposes
VOverflowSigned overflow
QSaturationAccumulated overflow
GE[n]Greater than or equal to4 flags (SIMD)
  • Code in ARM Assembly: Registers explained. An analogous series looking at AArch64 from the Apple point of view rather than Windows.
  • Writing ARM64 Code for Apple Platforms: The Apple ABI specification for AArch64.

¹ The Windows debugger isn’t quite sure which name to use for these registers. The disassembler calls the registers xip0 , xip1 , and xpr , but the expression evaluator doesn’t understand those names; you have to call them @x16 , @x17 , and @x18 . On the other hand, the expression evaluator does understand @fp and @lr and refuses to acknowledge the existence of the names @x29 and @x30 . Furthermore, the expression evaluator doesn’t understand any of the w aliases.

² AArch64’s register 31 is similar to PowerPC’s register 0, which changes meaning depending on the instruction. In PowerPC assembly, it was on you to keep track of which encodings treat register 0 as a value register, and which treat it as a zero register. At least AArch64 expresses the two cases differently: If an encoding uses pseudo-register 31 to mean sp , then you really must write sp . If you write xzr , you get an error.

PowerPC on the other hand would happily let you specify r0 even if the instruction treats it as zero. Which was one of the jokes from the short-lived parody twitter account that mocked PowerPC.

Источники:

https://en.wikipedia.org/wiki/Mac_transition_to_Apple_silicon&rut=dce7c86a5a0a46c008012080a294a0fe5306ba8aeab574b1fbde5ddb64da8224
https://en.wikipedia.org/wiki/AArch64&rut=5a4160b23e4ca2654358f210a6234a29d3e5bf6ccefa1a5478c281c73b8ffda3
https://learn.microsoft.com/en-us/answers/questions/10614/what-is-the-difference-between-x64-and-arm64&rut=38edc4b9b0a904fe13a7170f707bcdb9c8b289ebb3100347fb8aeb488184a3a0
https://pureinfotech.com/check-if-processor-arm64-x64-64bit-windows-11/&rut=31b8f4c59a3179ea358b97c4dd2660d4fe507e7303563a25814336c8a7430da8
https://developer.microsoft.com/en-us/windows/arm/&rut=26f55657793aaccc26e1ab490bf97515d256c55b45245e0a22a78de419403f11
https://www.cgdirector.com/x86-vs-x64-vs-arm/&rut=1e74db9e89ca2bbe0a83b8aa4d991916efaf36ddba77779c4da109a6765b4494
https://en.wikipedia.org/wiki/ARM_architecture_family&rut=268f6e697d23eb013026679baaea46ccd4aba73cff94a7207816615f9d21aaa9
https://devblogs.microsoft.com/oldnewthing/20220726-00/?p=106898&rut=db4daf013c2518bd2d368e4e322c7f4747feb76ddbe0f4c465ad6b999e668ef0
https://learn.microsoft.com/en-us/windows/arm/arm32-to-arm64&rut=5268b6a7a49a4e609d92bd6b703399e6c5d399749ae4f4255148f8f83a791d68