Is it a physical structure of the chip or is it programming? Because how can linux ARM run on a device that used to run windows x86?
Because how can linux ARM run on a device that used to run windows x86?
Have you misread AMD64 as ARM64?
AMD64 is the 64bit extension of x86, often also called x86_64.
As others has said, ARM is a completely different architecture which is not compatible with x86 without translation layers. ARM also has a 64bit version called ARM64 (or AArch64).
What you mean is the processor instruction set, which does affect the physical structure of the processor. You cannot just change the programming/microcode of the processor to have it use a different instruction set.
Because how can linux ARM run on a device that used to run windows x86?
I don’t think that’s possible. It is possible to have a translation layer, so that individual programs that are compiled for one instruction set (e.g. x86) can be run on a different instruction set (e.g. ARM).
But I can’t imagine such a translation layer working for the whole OS, as something still needs to tell the processor how to do the translation. Theoretically, the translation layer could be baked into the processor, but I have not heard of that being a thing, so far.
Is your question inspired by something specific?
https://en.wikipedia.org/wiki/Computer_architecture
Your question is confusing. What do you really want to know?
They don’t mean computer architecture. They mean processor architecture instead. Or I guess, more precisely the processor instruction set architecture, so for example x86, ARM etc…
Computer architecture is the mapping between binary instructions and the effect they have on the data that is in the CPU registers.
Different chip families have different codes, conventions, and implementation details than other families, but within a family the mapping should be the same to make sure there is compatibility.
Your last question relates to compilation.
High level programming languages like C or Python are compiled to machine code in order to run. That machine code is the set of instructions for that specific architecture.
So if you want Firefox to run on an ARM device and you have sufficiently agnostic source code (which is more and more common with time) then you simply change the compiler target to arm and recompile… which doesn’t even have to be on that particular processor! You can compile a program for an ARM processor using an AMD64 system (if your tool chain supports it).