Slashdot Mirror


ARM64 Vs ARM32 -- What's Different For Linux Programmers? (edn.com)

New submitter DebugN writes: When ARM introduced 64-bit support to its architecture, it aimed for Linux application compatibility with prior 32-bit software on its architecture. But for Linux programmers, there remain some significant differences that can affect code behavior. If you are a Linux programmer working with — or will soon be working with — 64-bit, you might want to know what those differences are, and this useful EDN article says it all.

102 comments

  1. ARM32? ARM64? by U2xhc2hkb3QgU3Vja3M · · Score: 0

    I'm not using ARM until we get something over ARM9000.

    1. Re:ARM32? ARM64? by Anonymous Coward · · Score: 2, Funny

      Vegeta, what does the scouter stay about his ARM level?

    2. Re:ARM32? ARM64? by Anonymous Coward · · Score: 3, Funny

      I'm wrestling with how to answer all these ARM questions.

    3. Re:ARM32? ARM64? by Anonymous Coward · · Score: 0

      Are you shure it's not a case of not having access to a STRONG-ARM?

    4. Re: ARM32? ARM64? by LoRdTAW · · Score: 2

      [goku@dragonball]$ scouter -h
      It's over
      Segmentation fault
      [goku@dragonball]$

    5. Re:ARM32? ARM64? by davester666 · · Score: 1

      You can buy a MS Surface really cheap if you are interested in that.

      --
      Sleep your way to a whiter smile...date a dentist!
  2. These go to eleven.. by Anonymous Coward · · Score: 0

    https://www.youtube.com/watch?v=4xgx4k83zzc

  3. I'm not a programmer... by Anonymous Coward · · Score: 1

    But if the answer isn't "32bit exactly", i will be really confused...

    1. Re:I'm not a programmer... by OrangeTide · · Score: 4, Informative

      The instruction set for ARM64 is a bit more like MIPS than ARM. I don't think it would matter to an end user, but this new 64-bit mode has made for a lot of extra work for compiler developers as many of the optimizations developed over the years are no longer effective for 64-bit code. And the bits of operating system and library code that was written for 32-bit or Thumb has to be rewritten as if ARM64 was a totally alien architecture.

      It came as a big surprise really, because years ago when ARM Thumb was added as an extension it was somewhat compatible with the old instruction set, at least in the assembler syntax. That made it relatively easy to port between the two modes. Thumb mode instructions that are half as big, but still operate on 32-bit values, but those instructions are more limited in terms of what they can do and what arguments they will accept. On the Game Boy Advance, the thumb operations could run twice as fast as the non-thumb operations because the 16-bit bus for cartridges was relatively slow compared to the CPU performance.

      ps - I prefer to call it aarch64 or ARMv8.

      --
      “Common sense is not so common.” — Voltaire
    2. Re:I'm not a programmer... by TheRaven64 · · Score: 1

      The instruction set for ARM64 is a bit more like MIPS than ARM

      That's not really true. MIPS has no condition codes, has branch delay slots, has no PC-relative addressing and no complex addressing modes. About the only thing where AArch64 is more like MIPS than AArch32 is in having a non-architectural PC, which is a decision made by most modern architectures as making the PC a possible destination register complicates a lot of things microarchitecturally. A few similarities between AArch32 and AArch64 that are not shared with MIPS:

      • They both have a set of condition codes.
      • They both have conditional moves that operate on the condition codes (though AArch32 also has a lot of other predicated instructions).
      • They both have complex addressing modes.
      • They both have the same SIMD extensions.
      • They can both load and store more than one integer register at once (AArch32 has load/store multiple, which are horrible to implement in a complex pipeline, AArch64 has load/store pair).

      I don't think it would matter to an end user, but this new 64-bit mode has made for a lot of extra work for compiler developers as many of the optimizations developed over the years are no longer effective for 64-bit code

      Speaking as a compiler writer... no. About the only AArch32-specific optimisations relate to if-conversion (which you can still do with a conditional move, unless they would require a predicated load / store) and prolog / epilog compression (which now you do with load/store pair instead of load/store multiple).

      I prefer to call it aarch64 or ARMv8

      AArch64 an ARMv8 are not interchangeable. ARMv8.1 is also AArch64, though includes a few nice additions, such as atomic read-modify-write instructions.

      --
      I am TheRaven on Soylent News
    3. Re:I'm not a programmer... by dotancohen · · Score: 1

      The instruction set for ARM64 is a bit more like MIPS than ARM

      That's not really true. MIPS has no condition codes, has branch delay slots, has no PC-relative addressing and no complex addressing modes.

      I think that OrangeTide meant that the experience of porting to ARM64 is like the experience of porting to MIPS. He mentions specifically that there are major code changes (i.e. in optimizations) that need to be done which weren't necessary when porting to i.e. Thumb. Those code changes make the port experience similar to porting to another architecture altogether, i.e. MIPS.

      --
      It is dangerous to be right when the government is wrong.
    4. Re:I'm not a programmer... by Anonymous Coward · · Score: 0

      I prefer to call it aarch64 or ARMv8

      AArch64 an ARMv8 are not interchangeable. ARMv8.1 is also AArch64, though includes a few nice additions, such as atomic read-modify-write instructions.

      ARMv8 is a specific architecture. Aarch64 is a mode of that architecture. ARM64 is what people are unofficially using for ARMv8, ARMv8.1, etc.

    5. Re:I'm not a programmer... by OrangeTide · · Score: 1

      Right. A lot of the conditional instructions have been dropped. And a lot of the semantics of existing instructions have changed. It is true that operations still modify status flags to handle conditions, versus MIPS which has branches that perform the comparisons themselves. Obviously the new architecture is not like MIPS, SPARC or POWER, but I'd argue it's not much like ARM either. Aarch r31 is a bit like MIPS r0 though, in that it is a zero value if you read it (rsp). Although it's a bit overloaded on ARM and it is a real register that can be saved and restored, while on MIPS it's always zero.

      --
      “Common sense is not so common.” — Voltaire
  4. tl;dr; by viperidaenz · · Score: 2

    It's mostly nothing to do with ARM and much to do with "Moving to a later Linux kernel", implying ARM 32bit CPU's don't run on the latest kernels. But they do.

    1. Re:tl;dr; by Guy+Harris · · Score: 5, Interesting

      It's mostly nothing to do with ARM and much to do with "Moving to a later Linux kernel",

      You're thinking of the third item in their list.

      The first item in their list does have to do with ARM; its register set is different, and OS APIs for debugging have platform dependencies - in particular, the Linux kernel handled A64 differently from A32 - and those particular developers happen to be using ptrace() and had to handle A64 differently.

      The second item in their list has to do with the C library doing more atomic load/store operations on A64 for some reason; they speculate that it's "to better support multiprocessor systems."

      The problem here is that the article had a misleading title; it was "ARM64 vs ARM32 -- What's different for Linux programmers" when it should have been "ARM64 vs ARM32 -- What's different for people working at a company whose core technology is a record and replay engine, which works by recording all non-deterministic input to a program and uses just-in-time compilation (JIT) to keep track of the program state". What Undo Software are doing is rather specialized and system-softwareish, and they run into issues that wouldn't affect the majority of programmers; those are the issues they're talking about.

    2. Re:tl;dr; by bluefoxlucid · · Score: 1

      I'm starting to wonder what really makes an architecture 32- or 64-bit. So far as I can tell, it's just the pointer size. 32-bit architectures can have 64-bit word sizes (double-word); the processor can internally carry 256-bit cache lines and have enormous data buses and still be an 8-bit 6502.

      Seriously, you could make that: a 6502 with pin-outs for 256-bit data buses, but 8-bit addressing. Prefetches 32 words at once through one cycle into CPU cache. It would be nonsense. The Athlon 64 architecture used to internally predict register usage and break the 64-bit GPRs into 32-bit GPRs, and add those plus the remaining GPRs to a set of internal 32-bit registers, which it used to preload registers: when you wanted to load an address into a register, it would have predicted this action and already cached it in an internal register; if you wanted to add a memory location to a register, branch prediction would have that location in an internal register, and do an add of one register to another. It used its 64-bit data bus to prefetch two words at a time: rather than prefetching the next 8 words by 8 memory bus accesses, it would prefetch 8 words in 4 memory bus addresses--doubling memory access speed compared to a 32-bit architecture with the same FSB clock.

      The key point of a 64-bit architecture is now the ability to address 64-bit memory locations. You can mess with 32-bit architecture to use 64-bit or 128-bit operations internally where appropriate--double words and other large data objects.

    3. Re:tl;dr; by Anonymous Coward · · Score: 0

      It's mostly nothing to do with ARM and much to do with "Moving to a later Linux kernel", implying ARM 32bit CPU's don't run on the latest kernels. But they do.

      I read that the other way around - that ARM64 doesn't run on older kernels (that you're presumably using elsewhere because for some reason it's commonplace to use ancient kernels esp. in embedded where ARM is popular) thereby forcing you to update.

    4. Re:tl;dr; by AReilly · · Score: 3, Interesting

      Only people who don't actually use processors at the instruction set level are uncertain about whether or not a processor is "32 bit" or "64 bit". If you look at the architecture, it is usually very easily apparent. Not always, but usually.

      Does it take more than one instruction to shift a 64-bit value? It probably isn't a 64-bit processor.

      --
      -- Andrew
    5. Re:tl;dr; by mikael · · Score: 1

      With 8-bit and 16-bit systems, this was the width of the data bus, while memory was mostly limited to 64Kbytes, but there were all sorts of funky paging that could swap in and out 16K blocks. With 32-bit and 64-bit systems, it's the theoretical maximum amount of uniquely addressable memory; 32-bit = 4 Gbytes, 64-bit = 1 Exabyte of storage. But CPU performance is being improved by using 128-bit and 256-bit wide data bus architectures to support SIMD instruction sets like AVX and 3Dnow!

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    6. Re:tl;dr; by Bert64 · · Score: 1

      Ofcourse the other architecture in the embedded space is MIPS, and MIPS64 support has been around for a long long time... The move to 64bit was a perfect opportunity for MIPS to expand their market share as MIPS64 was tried and tested while ARM64 was completely new.

      --
      http://spamdecoy.net - free throwaway anonymous email - avoid spam!
    7. Re:tl;dr; by iggymanz · · Score: 1

      Now that was funny, first sentence making some kind of absolute statement about people's understanding, but then you hedge in later sentences with "usually" and then "probably".

      the i860 was marketed by intel as a 64 bit processor because of the 64 bit graphics registers, but it had 32 of the 32 bit general purpose registers and 32 bit bus.

    8. Re:tl;dr; by viperidaenz · · Score: 2

      There are many instructions in x86 that operate on values larger than 32 bits.
      MMX comes with 8 64bit registers
      The movq instruction can move a 64bit value between memory and the MM registers.

    9. Re:tl;dr; by Anonymous Coward · · Score: 2, Interesting

      Will people *please* stop saying that hardware "runs on" software: it's the other way round!

      (If you want to say that a piece of hardware "runs" some software, that's perfectly acceptable -- but not "runs on".)

    10. Re:tl;dr; by viperidaenz · · Score: 1

      Unless your 32bit CPU supports PAE, then it can address 36 bits of memory.

    11. Re:tl;dr; by phantomfive · · Score: 1

      Seriously, you could make that: a 6502 with pin-outs for 256-bit data buses, but 8-bit addressing

      I'm not seeing what you're saying here. How would you be able to address that memory from within the 6502 instruction set, with 8-bit addressing?

      --
      "First they came for the slanderers and i said nothing."
    12. Re:tl;dr; by Anonymous Coward · · Score: 0

      In their minds, does a computer run on software the way a car engine runs on gasoline or diesel...?

      Or is it just idiotic, cargo-culted language like "could care less" or IT people who think they "implement" things when all they did was *install* or *deploy* it?

    13. Re:tl;dr; by enriquevagu · · Score: 1

      Of course the title is misleading! For a user-space programmer, the ISA is completely hidden by the compiler and the system libraries (for example, synchronization). Still, the document makes interesting points, such as different behaviour of the compiler (which apparently removes locks in ARM32 but not in ARM64) which could impact performance, especially for highly concurrent applications.

    14. Re:tl;dr; by Anonymous Coward · · Score: 1

      How would you classify a CPU like the Z80?
      It has an 8-bit databus and 8/16-bit registers but internally it is performing all instructions through a 4-bit ALU.
      That why even a register-register addition takes 4 cycles, not counting the memory refresh.

      It can do 16-bit additions (or left-shift if you so wish) with a single instruction, but I sure wouldn't call it a 16-bit CPU.

    15. Re:tl;dr; by Guy+Harris · · Score: 2

      Of course the title is misleading! For a user-space programmer, the ISA is completely hidden by the compiler and the system libraries (for example, synchronization).

      Unless you're one of the user-space programmers writing the compiler or the system libraries. :-)

      The programmers at Undo are programmers like that, not typical user-space programmers writing code for which the ISA doesn't matter.

      (And a fair bit of kernel programming is done with the ISA hidden by the compiler and lower-level kernel code, for that matter.)

    16. Re:tl;dr; by TheRaven64 · · Score: 1

      For a user-space programmer, the ISA is completely hidden by the compiler and the system libraries

      There are a few places where it might matter. For example, AArch64 can do atomic operations on pairs of pointers. This is particularly important for some of the RCU code in the Linux kernel, but will be similarly important for some userspace atomic operations. If you're writing a userspace threading library (fairly niche) then the different structure of ucontext_t will be important. It can also be important if you're looking at the ucontext_t that's delivered as an argument to signal handlers (though most signal handling code doesn't do anything with it).

      The barrier elision work is based on something that one of my students did. It hasn't yet been applied to AArch64 because the memory model is slightly different and they're working with some of my colleagues on a formal proof that the transforms would be valid, but it will appear there at some point. One of the slightly tricky things with ARMv8.1 is that atomic read-modify-write instructions are sometimes slower than the equivalent load-exclusive, modify, store-exclusive loop, depending on the microarchitecture.

      --
      I am TheRaven on Soylent News
    17. Re:tl;dr; by TheRaven64 · · Score: 1

      It's only easy on most modern ISAs because they have unified integer and address registers. Usually we use the size of an address register and implicitly assume that it's the same as the size of an integer register. This gets a bit confusing in some cases: I played with a highly specialised DSP a few years ago that had 64-bit integer registers but only 256-bit address registers (it was intended for a streaming computation that had very few temporary values, though the addresses were all to 64-bit words [it only had 64-bit load and store instructions], so it could address 2KB of SRAM). Was that an 8-bit processor? Generally, for this kind of thing, the designation just doesn't make sense and it's whatever the marketing folks decide (the same ones who decided that the Pentium was a 64-bit processor because it had 64-bit integer operations).

      --
      I am TheRaven on Soylent News
    18. Re:tl;dr; by TheRaven64 · · Score: 1

      It would have been, except for one problem: The owners of MIPS (Imagination Technologies) did not own any MIPS64 IP cores. They only had 32-bit cores available to license. All of the 64-bit cores were either developed by third parties, or retained by third parties during the many sales of the MIPS IP. Oh, and they decided to go batshit insane and make a modern ISA with MIPSr6 that reuses opcodes that were defined in MIPS III to MIPSr5 with incompatible definitions (e.g. replacing the branch-likely instructions, which have a delay slot that's only reached if the branch is taken, with compact branches that don't have a delay slot) and claiming that you can do binary translation to work around the differences (but not providing a reference implementation of the binary translation).

      --
      I am TheRaven on Soylent News
    19. Re:tl;dr; by bluefoxlucid · · Score: 1

      You'd say, "Get the memory at 0x0c00".

      It would load the memory at 0x0c00-0x0c0F into CPU cache, and copy the 0x0c00 address into a register. If you then tried to add 0x0c0A to that register, it would read it from cache.

    20. Re:tl;dr; by phantomfive · · Score: 1

      Oh, so still more than 64k wouldn't be accessible to the programmer

      --
      "First they came for the slanderers and i said nothing."
    21. Re:tl;dr; by bluefoxlucid · · Score: 1

      Right, just the internal architecture of an 8-bit processor is for some reason now 64-bit.

    22. Re:tl;dr; by phantomfive · · Score: 1

      Oh. I guess I think of "32" or "16" bit in terms of the ISA, not so much the other stuff.

      --
      "First they came for the slanderers and i said nothing."
    23. Re:tl;dr; by bluefoxlucid · · Score: 1

      Which also doesn't make much sense, since there's not much advantage and a lot of disadvantage to 64-bit ISA. The x86-64 ISA adds extra registers and other instructions which would be useful to 16-bit processors, but it also makes word-sized values 64-bits wide by default.

    24. Re:tl;dr; by phantomfive · · Score: 1

      Which also doesn't make much sense, since there's not much advantage and a lot of disadvantage to 64-bit ISA.

      The primary advantage for consumer devices is that you can access more RAM.

      The x86-64 ISA adds extra registers and other instructions which would be useful to 16-bit processors

      That's true, they should have been added years ago.

      but it also makes word-sized values 64-bits wide by default.

      Kind of......for a lot of instructions, the default is actually 16 bits. For a mov command, the default is to move 64bits, but you can also specify 8/16/32 bits. I'm not sure it matters too much practically what the 'default' is, though.

      The x86-64 is indeed a hybrid monstrosity, whose only redeeming feature is backwards compatibility.

      --
      "First they came for the slanderers and i said nothing."
  5. That's easy by pushing-robot · · Score: 4, Funny

    One has a lot more arms.

    --
    How can I believe you when you tell me what I don't want to hear?
    1. Re:That's easy by Anonymous Coward · · Score: 0

      No, that would then make the issue of arms per core or cores per arm.

    2. Re:That's easy by dotancohen · · Score: 1

      One has a lot more arms.

      Are you suggesting that an arms race is imminent?

      --
      It is dangerous to be right when the government is wrong.
  6. So in summary by NaCh0 · · Score: 3, Interesting

    There are no changes for programmers in general. Only the compiler writers need to care. (as usually happens with new cpu architectures)

    1. Re:So in summary by Tablizer · · Score: 1

      Can we have that in writing, please?

    2. Re:So in summary by Anonymous Coward · · Score: 0

      What do you think this is, hieroglyphics?

    3. Re:So in summary by Tablizer · · Score: 1

      worse, Perl

  7. C Programmers on Linux, not "Linux Programmers" by Anonymous Coward · · Score: 3, Informative

    This will have absolutely no effect to the majority of programmers that use a higher level language such as Java or Objective-C.

    As the article shows examples, only Assembly and C have changes from the 32 bit version, which are to be expected. Not a big surprise for anyone. I am sure my Python code will run the same as it did on ARM32.

    1. Re:C Programmers on Linux, not "Linux Programmers" by Anonymous Coward · · Score: 1

      I am sure my Python code will run the same as it did on ARM32.

      Unless the guys who write CPython get tripped by these differences

    2. Re:C Programmers on Linux, not "Linux Programmers" by Lisias · · Score: 1

      Guys that assume sizeof(int) as 32 bits, instead of using "sizeof(int)" explicitly will have a bad time.

      And believe me, they're at loose even nowadays.

      --
      Lisias@Earth.SolarSystem.OrionArm.MilkyWay.Local.Virgo.Universe.org
    3. Re:C Programmers on Linux, not "Linux Programmers" by Anonymous Coward · · Score: 0

      Wow! Really sorry to say that sizeof(int) is 32 bits even on a 64-bit architecture.
      This was decided when Sun started dabbling in 64-bit architectures on their SPARC.
      Too many things went to hell in an hand-bag and there was no substitute for a 32-bit integer.
      The long type is what changes between 32-bit and 64-bit architectures.

      But I agree the one should always use sizeof(), especially in regards to pointers. I've seen
      the classic "pointer to int" on a 64-bit architecture as "it must be 32-bits because it points to an int!

    4. Re:C Programmers on Linux, not "Linux Programmers" by fnj · · Score: 1

      This will have absolutely no effect to the majority of programmers that use a higher level language such as Java or Objective-C ... only Assembly and C have changes from the 32 bit version

      OMG, what drivel. Objective C is a superset of C, and as such shares all of C's characteristics.

    5. Re:C Programmers on Linux, not "Linux Programmers" by interval1066 · · Score: 1

      Its so easy to get the bit width of an int on any hardware it makes me cringe when embedded programmers don't do it.

      --
      Python: 'And then suddenly you have a language which says "we're all stuck with whatever the whiniest coder wants".'
    6. Re:C Programmers on Linux, not "Linux Programmers" by 0123456 · · Score: 1

      Didn't Microsoft go full retard and make 'long' a 32-bit type on 64-bit Windows?

    7. Re:C Programmers on Linux, not "Linux Programmers" by Anonymous Coward · · Score: 0

      If by "full retard" you mean "didn't break vast swaths of software" than, yes, that was quite "retarded" of them.

    8. Re:C Programmers on Linux, not "Linux Programmers" by Anonymous Coward · · Score: 1

      That should be (sizeof (int) * CHAR_BIT). POSIX requires CHAR_BIT to be 8, so you can reasonably choose to also make that assumption on Unix-ish systems. But on some architectures CHAR_BIT can be 16 or greater, e.g. on a DSP which only has floating point arithmetic. It could emulate 8-bit chars, but it'd be quite slow.

      Portable C programming is actually quite easy, but you just have to stay mindful. It helps if you stick to unsigned arithmetic when practical, which is usually the case because unsigned is the natural type for most things you do in a program. Pro tip: Ignore the advice of those who advocates using signed types.

      One benefit of being a C pedant (or aspiring to be one) is that you tend to avoid common mistakes. If you're constantly on the look-out for misuses of char and other typing issues, then spotting bad pointer handling and other stuff becomes second nature, as the former requires more experience. And you naturally avoid type punning, casting, and abusive use of types in general.

      Also, you come to realize that fixed-width types like uint32_t aren't as useful as most people think. People use them as a crutch so they don't have to think about their code as much. What you really care about are the limits of the data types. When you have to stop and, for at least a second, pay attention to these things, you'll find that the quality of your code increases and your bug count decreases. And where you do make assumptions, you learn to add the constraints to the code, e.g. by using static_assert.

      People wonder why the C committee doesn't narrow the number of choices compilers can make. It's regularly brought up at the committees. One of the counter arguments is IEEE floating point. On the one hand, it's made it easier to write portable floating point code. OTOH, it's made it _impossible_ to utilize novel and more high-performance floating point representations, e.g. unum floating point, which ultimately could make code faster and less buggy.

      Another example: Eventually systems might want to make use of tagged pointers for security. This will break much non-standard C code that improperly casts function pointers.

      These things matter, for many non-obvious reasons.

    9. Re:C Programmers on Linux, not "Linux Programmers" by ctrl-alt-canc · · Score: 1

      I am a FORTRAN programmer on Linux, you insensitive clod!

    10. Re:C Programmers on Linux, not "Linux Programmers" by Antique+Geekmeister · · Score: 1

      > Wow! Really sorry to say that sizeof(int) is 32 bits even on a 64-bit architecture.

      Really, it's not. "int" varies depending on compiler and architecture. See below from www.unix.org.

                      http://www.unix.org/whitepaper...

      It's precisely your kind of assumption from limited experience that breaks cross-compilation and multi-platform work.

    11. Re:C Programmers on Linux, not "Linux Programmers" by Anonymous Coward · · Score: 0

      I am sure my Python code will run the same as it did on ARM32.

      Probably, that is why the headline mentions programmers, not scripters.
      Someone has to port that Python interpreter for you before you can use it.

    12. Re:C Programmers on Linux, not "Linux Programmers" by TheRaven64 · · Score: 1

      They did break a lot of code, because a lot of code assumes that you can use long instead of intptr_t and store a pointer in a long then recover it later. The things that didn't break were doing really stupid things like putting long (instead of int32_t) in packed structs representing on-disk file headers (and Microsoft was responsible for shipping quite a few of those headers).

      --
      I am TheRaven on Soylent News
    13. Re:C Programmers on Linux, not "Linux Programmers" by Dog-Cow · · Score: 1

      You do know that MS Windows has existed longer than the int32_t typedef, right?

    14. Re:C Programmers on Linux, not "Linux Programmers" by Anonymous Coward · · Score: 0

      Well written C code needs no modification to run on arm64 or any other instruction set for that matter.
      And any code that actually requires using assembly is non-portable anyways.
      If anything, the worthless undocumented POSOCs using the instruction set will be what continues to give Linux programmers headaches.

    15. Re:C Programmers on Linux, not "Linux Programmers" by TheRaven64 · · Score: 1

      Yes and no. Yes, longer than the C99 standard int32_t typedef. No, not longer than the MS-specific int32 typedef, which was around at least in Windows 3.0 and inherited from Microsoft's DOS C toolchain.

      --
      I am TheRaven on Soylent News
    16. Re:C Programmers on Linux, not "Linux Programmers" by Lisias · · Score: 1

      Wow! Really sorry to say that sizeof(int) is 32 bits even on a 64-bit architecture.

      Q.,E.D. :-)

      The size of the int is a compiler decision, not architectural one. On my old 8 bits time, the sizeof(int) was 16 bits.

      --
      Lisias@Earth.SolarSystem.OrionArm.MilkyWay.Local.Virgo.Universe.org
  8. Does ARM64 matter? by Anonymous Coward · · Score: 1

    ARM64 has been coming for so long one wonders if it really matters anymore.

    Yes, it has reached cell phones and tablets - but nobody is running anything but iOS or Android on those.

    ARM64 was supposed to bring us standard motherboards with a standard, documented boot system so that Linux could treat ARM64 just like AMD64 for booting purposes - one standard bootloader instead of custom stuff for every board that quickly becomes a support nightmare.

    Yet years after announcing, just like Power8's move to the masses and other grand announcements in computing's history, it is still vapourware. And in the meantime Intel is making significant progress with trimming power consumption that the ARM64 market outside of iDevices may have vapourized.

    1. Re:Does ARM64 matter? by timmyf2371 · · Score: 1

      The market for mobile devices which might run ARM is far bigger than the market for laptops and desktops.

      --

      Backup not found: (A)bort (R)etry (P)anic
    2. Re:Does ARM64 matter? by Tablizer · · Score: 1

      Perhaps, but also less profitable.

    3. Re:Does ARM64 matter? by angel'o'sphere · · Score: 1

      Every modern car with lane detection, pedestrian detection, sign detection, break assistance, collision detection (and in ten ears that will be "state of the art" and become mandatory for every car by law, just like ABS and ESB(? ESS?) became a year ago) has a dozen of ARMs and a few DSPs.
      So yes: the simple idea of that Lady in the late 1980s is now the most sold high level processor on the planet.
      Nevertheless there are still odd 8 bit and 16 bit processors sold as well. After all if you save 1$ in a device and ship 500 millions of them, you save 500 million dollars.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:Does ARM64 matter? by Anonymous Coward · · Score: 0

      That depends on the number of diamonds in the casing of the device.

    5. Re:Does ARM64 matter? by Anonymous Coward · · Score: 0

      Re: "...might run ARM ..."

      Right there we have a problem. ARM does have particular strength in mobile it's true but we are predicting the future here. Remember when RISC was 'obviously' going to take over the world? What I remember is that didn't happen (don't bother with the micro architecture argument, we all know it's bull because that wasn't what the original projection was about).

      Also this does not address the concern of the GP, who stated that "ARM64 has been coming for so long one wonders if it really matters anymore." Yes, one only gets 3 chances to announce, for example, that the Wolf Is Coming To Eat Us, or that This Is The Year of Linux On The Desktop, or that ARM64 Servers Will Take Over Everything.

      ARM64 has been all hat and no cattle thus far.

    6. Re:Does ARM64 matter? by TheRaven64 · · Score: 1

      We have a few ARMv8 boxes. One from AMD has a fairly standard layout motherboard and will fit in most PC cases. One from Cavium is in a standard rack-mount case (and, with two sockets and 48 cores per socket, is serving as a very useful test bed for lock contention in a variety of parts of the kernel).

      --
      I am TheRaven on Soylent News
  9. This one goes to 64 by Anonymous Coward · · Score: 1

    It's not 32. You see, most blokes, you know, will be playing at 32. You're on 32 here, all the way up, all the way up, all the way up, you're on 32 on your arm. Where can you go from there? Where?

    - Nigel Tufnel

  10. Details by Galaga88 · · Score: 4, Funny

    You see, when you have ARM32 vs ARM64 you have to remember that 64 is at least twice as much as 32. So you're going to need to use larger instructions in your program or you're going to have a lot of empty space. Because your functions can go twice as far, you're going to need more data highways to get there without all the congestion. It's like moving from a crowded boulevard to an expressway.

    When it comes to mobile apps, which is where you're going to be programming the ARM, these wider highways occupy valuable space on your mobile board, but it's worth it to reduce congestion by at least a half. Also, because you have larger bits, you can get more numbers in your apps without having to stress the fixed point unit. This means fonts take up less space and as such you can use more serifed typefaces.

    This answer brought to you by That Guy Who Clearly Bullshitted Through His Interview and Got Promoted To Manager Last Week.

    1. Re:Details by Anonymous Coward · · Score: 0

      It's not "twice" as much, it's 4bln as much, if you're getting my drift...

    2. Re:Details by Anonymous Coward · · Score: 0

      The ARM64 processor is not a truck.

      It's like, two trucks.

    3. Re:Details by TheRaven64 · · Score: 1

      You see, when you have ARM32 vs ARM64 you have to remember that 64 is at least twice as much as 32. So you're going to need to use larger instructions in your program

      You're joking, but that's actually true. Most AArch32 code these days uses Thumb-2, where most common instructions are 16 bits, a few are 32 bits. There's no Thumb-3 (yet) for AArch64, so all instructions are 32 bits. There almost certainly will be Thumb-3 at some point, though it is likely to be a little while coming and involve profiling a lot of code to determine what the most common instructions are (and there's no point in doing that until the compiler back ends have stabilised a bit).

      --
      I am TheRaven on Soylent News
  11. ARM32 vs ARM64 by Anonymous Coward · · Score: 0

    I heard that beowulf clusters would not be supported on ARM32 but that they are going to be supported on ARM64 with some driver updates. You might have to reinstall Linux and reboot for these updates to take effect. And it doesn't always "take" on the first try so you might have to reboot multiple times. Also, due to glitches the updates might be uninstalled later and then you will need to reinstall them.

  12. Re:Trump vs Clinton -- Whats different for voters by bbruun · · Score: 1, Offtopic

    Danm you got some issues. You do know that its been 70 years since all of what You are descrbing happend (besides UKIP) ?

    lisaparratt is right on and your comment shows so.

    I live in Denmark, you know, among one of the first democratic countries in the world (besides the original democracy Greece), and our feet crumble when we see and hear the US talk about human rights, equal rights, and your so called democracy (which is a republic which is not a democracy which many people in and form the US claims).

    Socialism the way you talk about it and in general how the US portrais it is so far off that it makes Europeans laugh over the ignorance. Socialism is anything but the facist, stalinistic or nazi regimes you mentione. They are all dictatorships, arisen from failed attempts to implement different types of governments.
    One of the best ways to view the success of a country, a regime, is to look at how many of the population is insjail/prison. The US has over 7 million people in jail (that is 716 per 100000 capita).Denmark has 61 per 100000 aka 8% of what the US has.

    Socialism, in a capitalistic country like Denmark, is more like the US than you think yet we don't let our people starve in poverty because the rich needs more money. We do take care of each other instead of thinking egoistically about "what can I get" instead of "what do I need" and then make sure to give so everyone has "what I need" which includes free child care, education, healtcare and pension for the elder and care for them as well. All free for the individual. All of this costs hence the tax system which is between 40-60% of your income (depending on your income level) and 25% sales tax etc. like any other country.
    It works, it works al ot better than the US system which has for the past few decades just been on a downhill slope dragging the rest of the world into an abyss due to "problems at home" that apparently is "someone elses fault".

    So thank you for your 70 year old words of wisdom, which are in some serious need of some updates.

  13. Uh... by Anonymous Coward · · Score: 0

    One is 32 Bits and the other is 64 FUCKING BITS. NEXT!!

  14. Re:Trump vs Clinton -- Whats different for voters by silas_moeckel · · Score: 1

    It looks about that way from here in the states as well.

    --
    No sir I dont like it.
  15. 2+ years late by Anonymous Coward · · Score: 0

    If you're an iOS developer, this topic is over 2 years late.

    1. Re:2+ years late by unixisc · · Score: 2

      iOS only has to bother about Apple's A series of processors, and not the myriad variety of ARM CPUs from different vendors, such as Qualcomm, Freescale, TI, et al Not the same challenges

    2. Re:2+ years late by Anonymous Coward · · Score: 0

      If you're an iOS developer, this topic is over 2 years late.

      ARM64 Vs ARM32 -- What's Different For Linux Programmers?

    3. Re:2+ years late by Anonymous Coward · · Score: 0

      The only thing different about Qualcomm, Freescale, TI, etc... ARM processors that use the same processor core is the peripheral set. The actual instructions that the processors executes are identical, the processor is licensed from ARM. So this 64 vs. 32 bit architecture issue isn't impacted by the manufacturer of the processor.
      Now, writing application code to run on each of those various manufacturers processors can be a real PITA without a well thought out HAL to handle the damn peripherals. And honestly most SPI, I2C, etc.. peripherals work pretty much the same it's just a matter of mapping the various pieces of information you need to the right register and bit(s) of that register.

    4. Re:2+ years late by unixisc · · Score: 1

      Thanks, but doesn't quite change what I implied. Be it the instruction set or the peripheral set, iPhones, iPads and iPods use the same CPU from Apple's former Palo Alto Semi division. And likely the same peripheral interfaces. Going into different SPI/I2C/USB mode settings ain't trivial, and involves repeated low level programming. Whereas if it's done once on Apple's platforms, it can be reused, since Apple ain't gonna change those things in its processors to the point that it cripples the effort required in coming out w/ successors. Which is why Apple probably doesn't need to worry about any Hardware Abstraction Layers

      With Android, every platform needs to be separately tested since it's used on tablets/phones made by every CPU - Qualcomm, Freescale, et al. Multiply that by every Android version that's out, and you have major work required from just about every Android related project. Unless - as is the case - the projects just focus on Samsungs and leave the rest to the different vendors/carriers. And then you get the issue of products that don't work on particular tablets or phones, and not merely due to different memory configurations

  16. Bring on the ARM desktops already by Anonymous Coward · · Score: 0

    32-bit or 64-bit, just bring them! Most of us can live with paying 1/10 for 1/3 the power, compared to the fastest over-priced Intel offerings, anyway.

    1. Re:Bring on the ARM desktops already by MerlynEmrys67 · · Score: 1
      You haven't played with any of the arm tablets running android?

      Been around for a couple years now

      --
      I have mod points and I am not afraid to use them
  17. Re:Trump vs Clinton -- Whats different for voters by The+Wild+Norseman · · Score: 4, Funny

    Hang on, I think I'm getting it. Usually people use car analogies on /. but you're talking about the US and Denmark, right? So in this case, Denmark is 64-bit and the US is only 32-bit? Or are you talking about ARMs as in "the right to keep and bear ARM [chips]"?

    --
    "A government is a body of people usually -- notably -- ungoverned." -Shepherd Book
  18. Re: C Programmers on Linux, not "Linux Programmers by Anonymous Coward · · Score: 0

    Or, ya know, int32_t and friends.

  19. Re:Trump vs Clinton -- Whats different for voters by Anonymous Coward · · Score: 0

    The problem is that you are unable to distinguish socialism from social democracy.

  20. Re:Trump vs Clinton -- Whats different for voters by TheRaven64 · · Score: 2

    If you're going to define socialism by the fact that the NAZIs and the USSR had socialist in their name, then you also need to define democratic based on the Democratic Republic of Congo. Or you can try using the definitions that you'll find in a politics textbook and then people might be able to have a sensible conversation with you.

    --
    I am TheRaven on Soylent News
  21. Re:Trump vs Clinton -- Whats different for voters by Hognoxious · · Score: 1

    what's hilarious are the whacked out ideas europeans have of socialism.

    We're perfectly aware what it means. People on your side of the pond use it to mean anything you don't like. If I was you, right now I'd be cursing Craig Joubert, the neighbour's dog and the weather for being socialists.

    'nazi' literally means national socialist.

    Greenland literally means "A country that is green". Doesn't alter the fact that it's predominantly white.

    There is a connection, anybody know what it is?

    Then there's the insane social and economic policies of places like sweden, where man-hating feminists rule the roost, and citizens pay 75% of every kronor back to the state (50% income + 25% vat).

    You can't just add percentages like that. Protip: when dealing with percentages, consider what they're percentages of.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  22. Re: C Programmers on Linux, not "Linux Programmers by Anonymous Coward · · Score: 0

    They didn't used to be spec, not sure if they are now.

  23. Re:Trump vs Clinton -- Whats different for voters by Lakitu · · Score: 0

    live in Denmark, you know, among one of the first democratic countries in the world (besides the original democracy Greece), and our feet crumble when we see and hear the US talk about human rights, equal rights, and your so called democracy (which is a republic which is not a democracy which many people in and form the US claims).

    This is the dumbest thing people talk about. A republic is not democratic? Spoken by a poster who hails to his king (queen), baby?

    The US is a liberal democracy. It is THE liberal democracy. Calling it "not a democracy" is fucking retarded. You're a poster living in a kingdom claiming that his democracy is one of the oldest in the world despite it actually being a monarchy and almost a century younger than the USA. Sure thing, guy!

    I'm just going to go on with the rest of my day thinking that democracy must have some otherworldly meaning in Danish than it does in English because your post is full of things that have nothing to do with democratic values.

  24. Re:Trump vs Clinton -- Whats different for voters by Anonymous Coward · · Score: 0

    Of course this scary "socialism" is just bankrupting western civilization.

    fixed. The rest is just nonsense.

  25. Undo Software now supports 64-bit ARM by DebugN · · Score: 1

    For those of you who are interested, Undo Software [http://undo-software.com] now supports 64-bit ARM. The press release says that it is particularly useful for developers porting code to new architectures http://undo-software.com/press...