Does iphone processor ARMV6 supports MMX instructions?
The short answer is no - MMX is an intel technology. The longer answer is that ARM Supports the Neon SIMD instruction set. It is a similar architecture to the MMX instruction (i.e. it computes vecors) but it is obvioulsy not the same. ARM ship libraries to help you generate SIMD code (Using OpenMAX and GCC compiler intrinsics).
The iPhone includes a ARMv6KZ which does not support NEON later models include a Samsung S5PC100 which is based on the ARM Cortex-A8 core and does support Neon. Similarly, the Apple A4 powering the iPad is a Cortex-A8 based SoC.
MMX is a SIMD instruction set for x86. The iPhone uses an ARM processor so you can't use MMX.
As others have posted here, MMX is the Intel SIMD technology for the x86 architecture. So no, the iPhone does not support MMX itself.
The iPhone features an ARM Coretex A8 CPU, specifically the Samsung SoC S5PC100 that provides a SIMD extension known as NEON (the ARM equivalent to MMX).
While this isn't explicitly documented by Apple yet, the toolchain seems to support it. There are instrinsics for NEON in gcc, so you should be able to write SIMD code using NEON.
NEON example for iPhone SIMD
GCC intrinsics for NEON Reference
Note that this feature is specific to the 3GS, so is not backward compatible. You would need to ensure your app was flagged to indicate it required the 3GS (I don't think you can access the status registers for runtime detection).
Possibly helpful link: ARM Processor Instruction Set Architecture.
Looks like ARMV6 has a SIMD unit of some kind...
ARMs are a bit configurable, so, it's possible that the ARM in the iPhone doesn't
have this. Somebody who's actually signed up for the program might be able to answer,
if the NDA allows.
If you have something that MUST work, you could, I guess, build bochs. My guess is that you want to use mmx instructions for speed, and, obviously, this won't help a whole lot. If you have some algorithm that could run slowly, but, you can't reverse engineer it to
run without mmx instructions bochs might solve the problem.
Related
I am curious if I can develop my own programming language to output Cranelift or LLVM IRs, then use it to make a simple OS from scratch?
Specifically, do the instruction sets of Cranelift/LLVM IRs contain OS-level IO instructions?
Thank you.
I have recently bought a MikroE EasyMx Pro v7 board for the STM32 MCU, however, the compiler which MikroE uses for Arm Development is their proprietary MikroC compiler, which has hardly any tutorials on it.
I was wondering if anyone has successfully configured their board and the STM32Cube IDE to work well together, or if it is even possible.
As long as the MCU is from STM32 series, you can use STM32CubeIDE to develop for it. This applies to any board.
Also, as described in the manual, the onboard programmer is based on ST-Link V2, so debugging should not be any issue.
Can anyone suggest or recommend development tools or documentation for writing graphical applications on the Acorn RISC OS on the Raspberry PI? This OS is newly supported on the Raspberry PI computer, and I would like to be able to write graphical applications for that OS. It is however quite hard to identify working tools for the version on PI, given the long history of RISC OS, the (multiple) incompatible revisions of the OS, and relatively scant resources for RISC OS on PI.
One set of development tools bundled on the official RISC OS SD card image is the Charm high level programming language.
There is an implementation of the Lua scripting language available too, with extensions to integrate with the WIMP GUI environment.
The RISC OS Programmers reference manuals provide details of the available SWI's (API's).
If your happy with using the inbuilt BBC BASIC and / or ARM assemblers, open a text editor of your choosing (I used to like Zap) and simply Google for BBC BASIC wimp and pick a tutorial e.g. Beginners Guide to WIMP Programming OR Wimp Programming on RISC OS
If you wish to play in something other than BBC Basic or ARM assembler, RISC OS open sell a USB stick with assorted compilers and a set of DDE (Desktop Dev Environment) tools, which I assume are PI compatible. Unfortunately the few high level GUI based development tools, such as Helix Basic won't work on the PI.
Raspberry Pi RISC OS System Programming Revealed by Bruce Smith looks pretty good covering BBC BASIC, ARM Assembly and some C. It includes some WIMP development.
Also, check out the Documents folder on the Raspberry Pi RISC OS release. There should be a subfolder to do with programming which contains an introduction to BBC BASIC and the developer's guide to WIMP programming mentioned in #arober11's answer above. I think there are a couple of sample programs included as well.
There are so many statements in my code containing __m128i,_mm_loadu_si128,_mm_avg_epu8 and many more. This things work on Mac but fails to compile in ios. What are the replacements for these in IOS?
SSE is an Intel technology that is not available on the iOS devices' ARM chips. Have a look at the Accelerate framework for Apple's multi-platform API for these types of calculations.
The ARM architecture also provides its own SIMD (single instruction multiple data) instruction set called NEON, which is available on armv7 devices (iPhone 3GS and above).
Is there any iphone ARM based decompiler available?
You might have some luck with Ida Pro. It's kind of expensive though. I'm not sure if it has ARM support, but OllyDbg generally does well for my windows project.
(I just looked at it, and OllyDbg doesn't support ARM, but I'm leaving the link because it's still a great program.)
Ida Pro is the disassembler, it translates the binary into human readable ARM assembler.
hex-rays also provides a real decompiler, which translates the disassembled code into C.