ز بسم الله چیزی نیست بهتر نهادم تاج بسم الله بر سر
سلام دوستان گل و عزیز و هموطنان محترم و گرامی!
این نکته جالبی به نظرم اومد! چون علاقه زیادی به اسمبلی دارم خیلی دوست داشتم که بتونم از اسمبلی توی ARM هم استفاده کنم! گفتم براتون قرارش بدم!
برای استفاده از اسمبلی در زبان سی به خصوص در کامپایلر keil که ما توی اون کد های میکرو مون رو مینویسیم! میتونیم یه راه خیلی سریع و آسون رو پیشبگیریم!
به این نوع کد نویسی که میخوام بگم، میگن inline یعنی همونجا که داری C مینویسی، اسمبلی هم بنویسی!
خیلی آسونه با کد زیر این کار امکان پذیره
__ASM ("code");
کد ما باید حتما بین " " باشه تا اجرا شه!
مثلا کد اسمبلی زیر با کد زبان C زیر برابر هست!
__ASM("mov r1,#0xaa");
__ASM ("strb r1,[0x2009C054]");
C:
LPC_GPIO2->FIOPIN = 0xaa;
اون آدرس 0x2009C054 هم آدرس حافظه هست. اگه میخواید بدونید از کجا گیر آوردم میتونید به مطلب زیر مراجعه کنید!
فقط باید دقت کنید که کد های پردازنده های ARM با کد های اینتل 8080 و 8051 و.. برابر نیست!
میتونید توی نت سرچ کنید تا کدهای اسمبلی پردازنده های ARM براتون بیاد
مثلا توی سایت زیر برین با جدول زیر رو به رو میشید که رجیستر های ARM توشه!
Register | Alt. Name | Usage |
r0 | a1 | First function argument Integer function result Scratch register |
r1 | a2 | Second function argument Scratch register |
r2 | a3 | Third function argument Scratch register |
r3 | a4 | Fourth function argument Scratch register |
r4 | v1 | Register variable |
r5 | v2 | Register variable |
r6 | v3 | Register variable |
r7 | v4 | Register variable |
r8 | v5 | Register variable |
r9 | v6 rfp |
Register variable Real frame pointer |
r10 | sl | Stack limit |
r11 | fp | Argument pointer |
r12 | ip | Temporary workspace |
r13 | sp | Stack pointer |
r14 | lr | Link register Workspace |
r15 | pc | Program counter |
سایتشم
http://www.ethernut.de/en/documents/arm-inline-asm.html
هست که میتونید ببینید
سایت زیر رو هم ببینید البته از اینا بهتر هم توی نت هست به خصوص منابع خارجی:
http://www.toves.org/books/arm/
امیدوارم به دردتون خورده باشه!
اگه سوالی بود بپرسید! مطمئن باشید اگه بلد باشم پاسختون رو میدم
فعلا !
مخلصتونم!
یا علی مدد...!