09-19-2011, 10:47 AM
بهمنیار نوشته: خوب پس هنوز در موبایل نسل جدید هم سیستم عامل وابسته به پلات فرم نوشته می شود خوب آیا این مشکل سخت افزار است یا نرم افزار ؟ یعنی کسی پیدا نشده که برای موبایل سیستم عاملی بدون وابستگی به پلات فرم بنویسد یا این که اصلا نمی شود این کار را انجام داد؟
دشواری اصلی در بهینهسازی سیستم است. بکارگیری نابهجا از منابع سیستم میتواند در نرخ مصرف باتری دگرگونی بسیار زیادی بکند.
بهمنیار نوشته: گمان کنم این دعوا میان اپل و پی سی بود یک زمانی . ولی بعد دیگر نمی دانم سخت افزار پیشرفت کرد که مثل لینوکس را می شود روی هر دو سیستم پیاده کرد یا این که سخت افزاری ها یعنی اپل و آی بی ام و. . . کوتاه آمدند. یا یکی پیدا شد که سیست عاملی نوشت تا روی هر دو کار کند ؟
نوشتن نرمافزار برای هر سیستم کنشگری (OS) نیازمند پیروی از یک دستورکاری آرشیتکتی CPU ویژه به خود است. CPUهای ساخت AMD و Intel
و دیگر شرکتهای گمنام امروزین، از دو ساختار مهادین سود میبرند که x86 و x64 هستند: http://en.wikipedia.org/wiki/Instruction...chitecture
کُد ریشه (source code) سیستم کنشگر سپس بکمک یک Compiler (هَمگردان) روی یکی از این آرشیتکتها همگردانی میشود، برای نمونه کُد C زیر:
کد:
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
return 0;
}
روی آرشیتکت x86 به کُد زیر همگردانی میشود:
کد:
.text
LC0:
.ascii "Hello, world!\12\0"
.globl _main
_main:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
andl $-16, %esp
movl $0, %eax
movl %eax, -4(%ebp)
movl -4(%ebp), %eax
call __alloca
call ___main
movl $LC0, (%esp)
call _printf
movl $0, %eax
leave
ret
- pushl
- call
- movl
- ...
همگی بخشی از دستورهای زیرگردآیه از x86 instructions set هستند که برای یک CPU X86 فهمیدنی و انجام پذیر خواهند بود.
برونرفت برنامه چیزی بیشتر از نوشتن Hello World روی مونیتور البته نیست!

[*] http://en.wikibooks.org/wiki/X86_Assembl...ne-by-line
در نهایت، امروز همه سیستمهای کنشگر مهادین روی یکی از این دو آرشیتکت همگردانی میشوند که شامل حال همه نگارشهای *nix و windows میباشد.
Apple اما از آنجاییکه سختافزار خود را دارد، با داشتن آرشیتکت CPU ویژه به خود نیز، نرمافزارهایش را وابسته به اجرا روی سختافزارهای ساخت خود میکند.
از Mac OS X Snow Leopard (v10.6) به بالا البته، Apple هم برای سیستمکنشگر Mac روی به X86-64 آورده است،
ولی سیستم کنشگر iOS برای نمونه، همچنان روی آرشیتک ویژه apple کار میکند.
.Unexpected places give you unexpected returns