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).
Related
Is a Mac mandatory to build an iPhone app written in React Native?
If no, what are alternative ways? (like a container?!)
If yes, is there a backward compatibility matrix how old can a Mac be to support building of apps targeted to more recent iPhone devices?
Due to the fact that Apple currently uses the x86-64 hardware platform, it's quite an easy exercise to install MacOS with VMWare and thus also use XCode to compile iOS apps.
I am currently developing a xplattform Android/iOS App and evaluating, if iOS devices using RxBluetoothKit can communicate with Android devices running RxAndroidBle from Polidea GitHub?
I already looked through the FAQ, Stackoverflow and Gitter questions, but could not find a precise answer.
I am quite sure, that a communication should be possible, but I'd love to have a confirmation from someone who is not a total noob in BLE like me.
BLE(Bluetooth Low Energy) is a network technology designed by Bluetooth SIG and adopted by many platforms (iOS, Android, Windows, etc). The technology is independent of the Reactive Extensions(Rx) frameworks you mentioned. The Rx frameworks just supply a FRP(Functional Reactive Programming) interface to the technology. So RxBluetoothKit is basically a wrapper around Apple's Core BlueTooth framework, providing the Rx features. According to Wikipedia, BLE is supported by iOS 5 and later as well as Android 4.3 and later. You can find the specification here Bluetooth Core Specification V4.0
Though we can develop the i-phone application in the X-code
Why we need to use the Airplay-sdk?
can anybody differentiate between them?
I use Airplay SDK (see www.immortalcode.com) and it works well. Their code has been evolving, but it is pretty solid now. The big advantage for me is to be able to keep my source code in C++, and to be able to use a single code base for multiple platforms. I have built multiplatform games (iPhone, Android, bada, Windows) all from Visual Studio on Windows. The main caveat with Airplay SDK is that you may not get access to all the functionality you would normally have on a given platform. In particular, you probably won't get the native UI look and feel, and you may not have important options like using the ad provider of your choice. My understanding is that they've recently made strides in opening up the full range of native APIs on iPhone and Android, but still I think there will likely be problems when it comes to certain highly platform dependent stuff. Again, working with certain ad providers comes to mind as the main example.
You don't need to use the AirPlay SDK. You can write an iPhone app without it.
Airplay is a cross platform development solution allowing you to write applications for iOS, Android and other smart phone and tablet devices.
It differs from Xcode in that Xcode is an Integrated Development Environment (IDE) with support for writing (mainly, but not only) Mac OS and iOS applications.
Airplay is a Software Development Kit (SDK). It is not in itself an IDE. You still need to use an IDE in order to write applications, and it appears that Airplay works with both Visual Studio on Windows and Xcode on Mac OS X.
It appears that Airplay uses C++ as it's main language, providing access to iOS APIs through a wrapper of some kind. It also appears to have its own UI library, meaning your app will look the same on all devices, but not the same as other apps written natively for each respective platform.
Airplay SDK is a C/C++ programming environment that supports multiple mobile platforms. It consists of several wrappers to native libraries for various mobile OSes and consoles ( Iphone, Android and Symbian amongst them ) and of a cross compiler ( gcc under the covers ) that integrates with Visual studio ( on Windows) and Xcode ( on Mac ). The wrappers provide an uniform programming interface among all supported operative systems. Basically you develop on your desktop and then you deploy on multiple platforms with a single click. The SDK is fair complete covering 3D and 2D graphics, a basic UI framework, sound and resource managment facilities for example. The main drawback is that multithread is not supported and that it may be problematic to use native features of a given OS. Also the GUI system doesn't provide out of the box the same elegance and look and feel one can found on the Iphone or Android. On Android, Iphone and Windows there is an extension mechaninms that allows one to link native libraries. I am using it to develop a 2d platform with Iphone and Android as the main targets. I found that the programming model proposed by Airplay suits a videogame very well but it may be inconvenient for GUI-heavy applications. However the framework is extremely solid and works well and I haven't found bugs so the code is well tested. If you are planning to develop a multi-platform game you should definitely give it a try. If you need to have more control on what happens under the covers and you would like to use native features I would also consider COCOS2D-X (http://www.cocos2d-x.org/) as an alternative.
The project is still immature and has a few bugs but I have tried it and I found it extremely promising. Moreover you have full source code: if you find a bug or need an extension you are free to provide your own solution.
Marmalade / AirPlay SDK will be providing access to native UI's in a forthcoming release. Check out their road map at http://www.madewithmarmalade.com/marmalade/releases-and-roadmap
Do any libraries or other development resources exist that can help reduce the effort involved in porting applications between various mobile platforms? In particular, I am interested in supporting iPhone, Android, and Windows Phone 7. Some areas of concern include UI, client-server communication, and hardware support (e.g., camera, GPS, etc).
MonoTouch allows you to write iPhone apps using .NET (C#). In the near future, an Android version will also be available (MonoDroid)
As for Windows Mobile, I'd forget about that and concentrate on Windows Phone 7, which will use Silverlight for apps. And of course, Silverlight is .NET as well, so you can share all your business logic between Silverlight, MonoTouch (iPhone) and MonoDroid (Android)
There is actually a really good tool out there that allows you to write apps for android and iphone in javascrpit, HTML and CSS. Then the program will port the app for either iphone or android, building the objective C code (iphone) or java code (android) as it compiles. Later revisions of the program are said to include the ability to port to palm and blackberry as well. And the bonus... free and open-source!!
PhoneGap supports Android, Blackberry, and iPhone formally. They tweeted that it works on Windows Phone 7, but it's a bit early to feel certain of that, since that OS has not shipped yet. Has reasonable but far from complete hardware support.
Well it appears that iSpectrum seems to be what you're looking for.
You'll find a video on their website homepage ( http://www.flexycore.com/ ) which shows a 3D android game they ported in only 2 days!
All mobile platforms I've encountered so far have C89-compatible compilers, so that is what you want to use for the core application logic if you have high portability requirements.
The product I'm working on can currently be built and run on Android, iPhone, Symbian, Windows Mobile and some other proprietary platforms (Nintendo handhelds) and legacy platforms (PalmOS, OSE) as well as "real" machines (Linux and Solaris servers).
Of course the UI code has to be written specifically for each platform, but the core is built from the same source code for all targets.
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.