RosAsm Manual
راهنمای استفاده از اسمبلر روسسم
Overview ..
نمای کلی ( نگاه از بالا - بررسی کلی )
RosAsm is a 32 bit specific assembler with an integrated IDE.
روسسم ، یک اسمبلر خاص 32 بیتی با یک محیط توسعه ی مجتمع توکار (جاسازی شده ) می باشد .
( یعنی روسسم خودش یک IDE منحصر به فرد برای خودش می باشد و نمی توان از نرم افزار دیگری بعنوان IDE روسسم استفاده کرد . لذا روسسم توسط هیچکدام از IDE های زبان اسمبلی قابل استفاده نیست مگر توسط خودش !! . وحیدمی ) .
As opposed to other Assembly IDEs, which tend to impress the user by a heavy overload of features and multiple windows, the one of RosAsm is as naked and simple as possible.
برخلاف سایر IDE های زبان اسمبلی ، که قصد دارند کاربر را از طریق نمایش دادن یک اضافه بار از ویژگیها و پنجره های چندگانه ، تحت تاثیر قرار دهند ، مال روسسم ( یعنی IDE روسسم ) تا سرحد امکان ، برهنه و ساده ( و خلوت ) است
( این جمله نوعی متلک خطاب به طراح Winasm Studio و Radasm و Easycode بود که می خواهد بگوید روسسم برخلاف اینها ، صدها پنجره و ابزار و ویژگی را برای جذب کاربر ، بر او تحمیل نمی کند و تا سرحد امکان ساده و بی ریا و خالص و سبک و تمیز و خلوت می باشد . وحیدمی )
Most advanced features require reading the Manual, like the very powerful Right-Click, that you will miss it you don't read Source_Editor.
( کشف و بکارگیری ) اکثریت ویژگیهای پیشرفته ، به مطالعه ی فایل راهنمای روسسم ( یعنی همین فایل B_U_Asm.exe ) ، نیاز دارند ، از قبیل راست-کلیک بسیار قدرتمند ، که شما آنرا از دست می دهید اگر شما بخش Source_Editor را مطالعه نکرده باشید .
( یعنی برخلاف سایر نرم افزارها ، روسسم بگونه ای طراحی شده که تا وقتیکه فایل راهنمای اصلی اش یعنی فایل B_U_Asm.exe را بطور کامل نخوانید و محتویات اش را به درستی درک نکنید ، نمی توانید با روسسم برنامه نویسی کنید زیرا تمام ترفند ها و قدرت این اسمبلر در پشت صحنه قرار دارد و جلوی چشم شما ظاهر نمی شوند مگر با استفاده از ترفندهای خاص . دقیقا مثل نرم افزار معروف فوتوشاپ که بسیاری از ترفندها و تواناییهایش اصلا دیده نمی شوند و باید حتما راهنمای فوتوشاپ را بخوانیم تا بتوانیم از محیط ساده ی این نرم افزار استفاده کنیم . وحیدمی )
For the Assembler itself, it has been written with the following goals and characteristics:
برای خود اسمبلر ، آن با اهداف و خصوصیات زیر نوشته شده است :
Full assembler-written applications production.
تولید نرم افزارهای کاربردی ( حرفه ای و قدرتمند ) که بطور کامل (صد در صد ) با زبان اسمبلی نوشته شوند .
Stand alone / all-in-one approach / Tends to include all Asm32 needed tools (Debugger, Linker, Disassembler, Resources Editors, IDE).
دیدگاه ( ایده ) طراحی نرم افزار مستقل / همه در یک ، قصد دارد که تمام ابزارهای ضروری زبان اسمبلی 32 بیتی ( دیباگر ، لینکر ، دیس اسمبلر ، ریسورس ادیتور ، محیط مجتمع برنامه نویسی ) را در قالب تنها یک فایل اجرایی ، شامل کند .
( برنامه نویسی تک فایلی . برنامه نویسی یکپارچه (مونوفایلینگ) یعنی نوشتن تمام اجزای نرم افزار در قالب تنها یک فایل اجرایی و بدون هرگونه دپندنسی و کتابخانه و سایر فایلهای اضافی و زائد و فایلهای هدر . دقیقا شبیه به مدل برنامه نویسی با هگز ادیتور . این باعث می شود که نرم افزاری که تولید می کنیم تحت کنترل کامل و مستقیم خودمان باشد و به دلیل اینکه تمام اجزای نرم افزار در قالب یک فایل ساخته می شوند همه چیز با چشم کاملا باز ، ساخته می شود و سیستم کاملا جمع و جور و قابل کنترل است و عملا هیچنوع باگ تولید نمی شود . برنامه نویسی بدون باگ . وحیدمی )
Fast output.
خروجی سریع .
(تولید سریع نرم افزار در کمترین زمان ممکن )
A 1,000,000 octets application (1Mo is consistent for an Asm written Code), is built in 3.16 seconds on K6/300/win95, from full source analyses to PE writing.
یک اپلیکیشن با خاصیت یک میلیون بایت ، ( یک میلیون بایت ، برای یک کد نوشته شده با زبان اسمبلی ، همسان و سازگار است ) ، که در طول مدت 3.16 ثانیه روی سیستم K6/300/win95 ، از مرحله آنالیز کامل سورس کد تا نوشتن فایل اجرایی نهایی ، ساخته شده است .
( لغت octet به معنای هشت تایی می باشد . در اینجا منظور از این لغت ، هشت بیت می باشد یعنی یک بایت یا یک کد زبان ماشین . یعنی می خواهد بگوید که اسمبلر روسسم می تواند در زمانی کوتاه تعداد یک میلیون بایت کد اجرایی به زبان ماشین ، تولید کند . این آزمایش را روی ویندوز 95 و سیستم k6/300 که دقیقا نمی دانم چیست انجام داده است .
البته در نسخه های جدید ، با وجود افزایش حجم سورس اسمبلر روسسم ، اما بازهم این اسمبلر می تواند سورس حجیم خودش را در مدتی حدودا یک ثانیه کامپایل نماید و یک نسخه ی جدید از خودش بسازد . البته این اعداد بسته به شرایط و سیستم کامپیوتری و نوع ویندوز و سایر مسائل ، کم یا زیاد می شوند .
متاسفانه رنه تورنویس ، توضیحات دقیقتر و قابل فهمتری ارائه نداده است . لذا اگر این ترجمه ، غلط بود من بی تقصیرم . وحیدمی )
No relationship with the usual encodage speed given in other Assemblers documentation.
عدم خویشاوندی و ارتباط با سرعت رمزی تعیین شده در مستندات سایر اسمبلرها .
( یعنی سرعت روسسم هیچ ارتباطی با سرعت مرموز سایر اسمبلرها ندارد و براساس آنها ساخته نشده است . وحیدمی )
The one of RosAsm is really blazingly fast and counts for few in calculations.
سرعت روسسم واقعا به شکل انفجاری ( موشک شلیک شده ) ، سریع است و در محاسبات ، عدد کوچکی ( تعداد ثانیه ی صرف شده برای اجرای روسسم ) ثبت می شود .
True pure assembly language without any C-like features.
زبان اسمبلی خالص صحیح بدون هرگونه ویژگیهای شبه سی .
(یعنی برخلاف اکثریت اسمبلرها که خصوصایت ذاتی زبان برنامه نویسی سی را به ارث برده اند و ناخالص و دورگه و حرامزاده می باشند ، روسسم یک اسمبلی کاملا خالص و حلال زاده و اصیل و تمیز و صحیح است و هیچ چیزی از زبانهای سطح بالا در درون اش وجود ندارد . وحیدمی )
(no STRUC, PROC, USES, LOCALS and so on...).
عدم وجود چیزهایی همچون STRUC ، PROC ، USES ،LOCALS و غیره در گرامر اسمبلر روسسم .
( متاسفانه حتی فسم ( فلت اسمبلر ) نیز از این عناصر زبانهای سطح بالا در گرامر خود استفاده می کند . وحیدمی )
These HLL features are easy to simulate with RosAsm Macros.
این ویژگیهای زبانهای سطح بالا برای شبیه سازی از طریق ماکروهای روسسم ، آسان هستند .
( یعنی این ویژگیها در روسسم به آسانی با کمک ماکروها شبیه سازی شده و بکار می روند . وحیدمی )
This exclusion goal is to let users define what HLL abstraction they want.
هدف از این استثنا ( یا این هدف استثناسازی و محرومیت ) اینست که به کاربران اجازه دهد که چه نوع انتزاع ( تجرید - چکیدگی - اختلاس - ایزوله سازی ) زبان سطح بالا را می خواهند ( اجرا نمایند ) .
RosAsm itself remains as low level as possible for a Win32 Assembler, but the Macros system is a wide open door to high level writing styles.
خود روسسم همچنان ، تا جای ممکن بعنوان یک اسمبلر ویندوز 32 بیتی ، بصورت زبان سطح پایین باقی می ماند ، اما سیستم ماکروها یک درب بزرگ و گسترده برای نوشتن سبکهای شبیه به گرامر زبانهای سطح بالا ، می باشد .
(یعنی روسسم خودش ذاتا تا ابد یک اسمبلی کاملا سطح پایین و خالص است اما با کمک سیستم ماکروها که همچون یک دروازه به روی شما باز می شود می توانید به سبک زبانهای سطح بالا در روسسم برنامه نویسی نمایید . وحیدمی )
Examples in Beginners' Tut 5.
مثالهایی از بکارگیری ماکروها و شبیه سازی گرامر زبانهای سطح بالا در روسسم ، در فایل Tut5.exe مربوط به مبتدیان ، نوشته شده اند .
Added to User macros defined HLLs possibilities, RosAsm may also include selectable Pre_Parsers enabling 'Non-Asssembly' syntaxes, just like external 'Front-Ends' would do..
افزون بر ماکروهای کاربر که توسط کاربر و برای شبیه سازی امکانات زبانهای سطح بالا تعریف شده اند ، روسسم همچنین می تواند پیش-تجزیه گرها را با توانا کردن نحو " غیر اسمبلی " شامل کند ، درست مانند فرانت اند خارجی ...
( بک اند و فرانت اند جزو اجزای یک کامپایلر محسوب می شود . درس اصول طراحی کامپایلر . درواقع این پیش - تجزیه گرهای روسسم باعث می شود که روسسم بتواند به یک زبان سطح بالا تبدیل شود یا اینکه شما بتوانید با کمک درس اصول طراحی کامپایلر رشته ی مهندسی کامپیوتر ، یک زبان جدید را در داخل روسسم طراحی نمایید . من خودم چون مهندس نیستم قادر به انجام اینکار نبودم ولی اگر کسی مهندس کامپیوتر باشد می تواند از این خاصیت روسسم برای طراحی و ساخت زبان برنامه نویسی جدید استفاده نماید . این خاصیت جالب را فقط در روسسم دیدم . هرچند که مردم از روی فسم نیز زبانهایی جدید ساخته اند اما سازوکار فسم متفاوت است چون معماری فسم و روسسم تا حدودی با یکدیگر فرق دارند . وحیدمی )
32 bit instructions full set (up to Pentium, FPU, MMX, 3D Now!, XMM SSE/SSE2/SSE3 ).
پشتیبانی روسسم از مجموعه ی کامل دستورات زبان اسمبلی پردازنده ی 32 بیتی اینتل شامل دستورات معمولی و دستورات خاص .
( روسسم گرچه 32 بیتی می باشد ولی می تواند به بخشهای 32 بیتی پردازنده های 64 بیتی اینتل دست یابد و بنابراین تحت ویندوز 64 بیتی مثل ویندوز 10 نسخه ی 64 بیتی ، می توانید به راحتی با روسسم که 32 بیتی است برنامه نویسی نمایید . یعنی برنامه های 32 بیتی بسازید و اجرا نمایید
برای برنامه نویسی در تمام مدلها شامل 4 بیت ، 8 بیت ، 16 بیت ، 32 بیت و 64 بیت ، می توانید از فسم ( فلت اسمبلر ) تحت تمام سیستم عاملها و تمام پردازنده ها و تمام معماریهای مختلف جهان ، برنامه نویسی نمایید . بنابراین اگر دیدید که روسسم محدود کننده است می توانید از فسم برای پردازنده یا سیستم عامل مورد نظرتان استفاده نمایید . وحیدمی )
Specific programming. - One specific version for each application type.
برنامه نویسی خاص (ویژه) . یک نسخه ی ویژه برای هر نوع اپلیکیشن (نرم افزار و ... )
This first version is for ReactOs PE files production.
این نسخه ی اول روسسم ، برای تولید فایلهای اجرایی سیستم عامل ری اکت او اس ( و البته تمام نسخه های ویندوز ) ساخته شده است .
( به دلیل اینکه سیستم عامل ری اکت او اس هنوز در دوران نوزادی بسر می برد و قابل استفاده نیست لذا رنه تورنویس ، اسمبلر روسسم را برای سیستم عامل ویندوز بازنویسی کرد . روسسم روی تمام نسخه های ویندوز از ویندوز 98 تا ویندوز 10 و ویندوز سرور 2022 به راحتی اجرا می شود . در این مورد تجربه دارم و شخصا آزمایش کرده ام . وحیدمی ) .
As ReactOs is still under development, you can use it for Win32 applications (Win95/98/NT/2000/XP)
از آنجاییکه سیستم عامل ری اکت او اس هنوز تحت توسعه می باشد ، شما می توانید روسسم را برای تولید نرم افزارهای ویندوز 32 بیتی بکار ببرید . ( ویندوز 95 تا ویندوز ایکس پی . )
( البته همانطور که در بالا گفتم من خودم روسسم را روی ویندوزهای جدید مثل ویندوز 7 و 8 و 10 و ویندوز سرور 2022 نیز اجرا کردم و تحت این ویندوزها توانستم نرم افزار بسازم و اجرا کنم . بنابراین شما نیز می توانید تحت ویندوز 10 یا ویندوز سرور با روسسم برنامه نویسی نمایید . حتی توانستم با کمک نرم افزار PlayOnLinux تحت لینوکس لوبونتو ، اسمبلر روسسم را اجرا کرده و با آن برنامه نویسی نمایم . بنابراین کاربران لینوکس نیز می توانند براحتی با کمک این نرم افزار ، اسمبلر روسسم را اجرا کنند و با آن نرم افزار ویندوزی بسازند . وحیدمی )
Just a few words to tell what I mean with 'specific'.
فقط چند کلمه می گویم که منظورم از لغت " خاص " چیست .
I use this word in both of two meanings simultaneously:
من این لغت "خاص" را در هر دو معنا در یک زمان واحد بکار می برم :
- Specific as specifically designed for only one file type production;
خاص از آنجاییکه روسسم مخصوصا برای تولید فقط یک نوع فایل طراحی شده است
- Specific as a programming style that does things the simplest way, without any portability or reuse claim.
خاص همچون یک سبک برنامه نویسی که کارهایی را به ساده ترین روش بدون هرگونه ادعای قابلیت حمل یا استفاده ی مجدد ، انجام می دهد .
Portability is a wrong headed idea.
قابلیت حمل ، یک ایده ی عمده ی غلط است.
( منظور از قابلیت حمل در اینجا ، می تواند هرچیزی باشد . به مرور زمان و در حین ترجمه ، معنای صحیح قابلیت حمل را متوجه می شویم . وحیدمی )
Reuse of routines should be avoided as much as possible because this is the most assured way we will be calling for a truck to carry a single strawberry.
استفاده ی مجدد از روتین ها باید تا جای ممکن بکار نرود زیرا این یک راه مطمئن است که ما در آن راه ، داریم یک ماشین حمل زباله را فقط برای جابجا کردن یک تکه دستمال کاغذی صدا می زنیم .
(در زبانهای سطح بالا ، استفاده ی مجدد یک روش مطلوب و پسندیده است و در وقت و هزینه صرفه جویی می کند. در اسمبلی نیز می توانیم از متد استفاده ی مجدد استفاده کنیم ! ایرادی ندارد ولی خب منظور رنه تورنویس از متن بالا این بود که استفاده ی مجدد از روتینهای اسمبلی مثل اینست که برای جابجا کردن یک تیکه کوچک دستمال کاغذی یک کامیون بزرگ حمل زباله را فراخوانی کنیم که خب در دنیای واقعی هیچکس اینکار را نمی کند و کامیون حمل زباله در ساعت مشخص و معینی می آید و تمام زباله ها را یکجا برمی دارد و می برد و هرگز بخاطر یک تیکه آشغال کوچک مجددا برنمی گردد و این کاملا طبیعی است .
حالا این استفاده ی مجدد از روتین های کوچک اسمبلی شبیه به همین رویداد غیرطبیعی است . یعنی بهتر است که دم به دم روتینها را استفاده نکنیم . در ادامه متوجه می شویم که چه راهکارهایی را می توان جایگزین کرد . وحیدمی )
'One step' production of applications
(from source to application by one click on 'Compile')
تولید " تک مرحله ای" نرم افزارها ( از سورس به اپلیکیشن ، تنها با یک کلیک روی عبارت Compile .
( برخلاف زبانهای سطح بالا خصوصا سی و سی پلاس پلاس و برخی اسمبلرهای کودن مثل مسم 32 ، در روسسم و فسم تنها با فشردن یک کلید ، سورس کد به نرم افزار قابل اجرا تبدیل می شود و در وقت صرفه جویی می شود . بسیار شبیه به متد برنامه نویسی سریع دلفی !!!
شخصا از اینکه در زبان سی پلاس پلاس ، بین کامپایل و بیلد و ران، چندین مرحله ی مختلف و مجزا وجود دارد از این زبان کودن متنفر هستم . بخصوص اینکه زبان سی پلاس پلاس انقدر کودن و نابینا است که فایلهای هدر را نمی بیند و خطای عدم وجود فایل را صادر می کند و نرم افزار را کامپایل نمی کند . وحیدمی )
Ease of use
سهولت استفاده
No red tape (absolutely) everything as simple as possible (reformed syntax)
بدون خط قرمز (مطلقا ) همه چیز به سادگی هرچه تمامتر ، امکان پذیر است ( سینتاکس تصحیح شده و مهذب ) .
( یعنی هیچ خط قرمز یا نوار پایان یا محدودیت فنی در کار نیست و سیستم انعطاف پذیر و پویا و هوشمند می باشد و سینتاکس نیز ساده و قابل فهم و پاکیزه و خالص است . وحیدمی )
All needed tools are in a stand alone program.
تمام ابزارهای ضروری ، در یک نرم افزار مستقل ، مستقر شده اند .
(یعنی هیچ ابزار خارجی نیاز ندارد و تمام اجزای زبان برنامه نویسی در درون تنها یک فایل قرار گرفته اند و مثلا ریسورس کامپایلر و لینکر نیز بخشی از بدنه ی اصلی زبان هستند و به لینکر جداگانه نیاز نیست . وحیدمی )
No external Linker, Debugger,... needed.
به هیچ لینکر یا دیباگر یا .... خارجی نیاز نیست .
External File needed for compiling: Win32 Equates
فایل خارجی ضروری برای عملیات کامپایل : فایل حاوی ثابت های سیستم عامل ویندوز است .
( در زبان اسمبلی ، به ثابت های سیستم عامل ، اصطلاحا همترازی یا معادل گفته می شود زیرا هرکدام از ثابت های سیستم عامل ویندوز دقیقا با یک کد زبان ماشین ، همتراز و معادل می باشند . بسیار شبیه به دستورات زبان اسمبلی که آنها نیز رابطه ی نظیر به نظیر با کدهای زبان ماشین دارند . وحیدمی )
Files also outside: Win32 Structures / Win32 Api Functions / Help Files
سایر فایلهای خارجی روسسم : فایلهای حاوی ساختارهای ویندوز ، فایلهای حاوی توابع ویندوز ، فایلهای راهنما و مستندات .
Full control for the programmer on what's going on
امکان کنترل کامل برای برنامه نویس روی کاری که دارد انجام می دهد .
No internal hidden macros (user macros are easy and powerful).
بدون ماکروهای مخفی درونی ( ماکروهای کاربر ، آسان و قدرتمند می باشند )
( روسسم یک اسمبلر کاملا خالص و استاندارد است و هیچ ماکرویی از قبل در آن جاساز و تعبیه نشده است . ماکروهای روسسم توسط خود برنامه نویسان تعریف می شوند و قابل فهم و ساده هستند . متاسفانه ماکروهای فسم و مسم و بسیاری از اسمبلرها گنگ می باشند و قابل فهم نیستند . من خودم شخصا هرگز از ماکرو استفاده نمی کنم خصوصا در فسم و روسسم . من در فسم و روسسم مطلقا و منحصرا از دستورات خالص زبان اسمبلی سطح پایین و در مدل دیس اسمبلی استفاده می کنم زیرا معتقدم که اسمبلی باید به شکل دیس اسمبلی باشد وگرنه اسمبلی نیست و یک زبان جعلی خواهد بود لذا هرگز از اسمبلی سطح بالا یا ماکرو استفاده نمی کنم و به خوانایی کد اهمیت نمی دهم بلکه به کارایی و سرعت و اصالت کد اهمیت می دهم تا بتوانم دیس اسمبلی را تنها با یک نگاه درک و تفسیر کنم و از زبانهای ماشین و اسمبلی دور نشوم لذا چندان تمایلی به معرفی ماکروهای روسسم ندارم مگر اینکه مجبور باشم . وحیدمی )
Full control of jumps sizes.
کنترل کامل اندازه ی پرشها
(یعنی می توانیم بجای پرشهای طولانی و در هم و برهم ، از پرشهای ساده و رو به پایین و کوتاه استفاده کنیم تا کد اسمبلی بهینه شده و نرم افزار با سرعت بسیار بالا اجرا شود . من شخصا طرفدار کدهای کوتاه و پرشهای کوتاه و ساده و رو به پایین هستم و هرگز رو به بالا پرش نمی کنم زیرا دوست ندارم کد اسمبلی به یک اسپاگتی تبدیل شود و دلم می خواهد سر و ته روتینهای برنامه کاملا مشخص باشد . وحیدمی )
No replacements features in any case (do it yourself).
بدون ویژگیهای جایگزین در هر موردی . ( خودتان اینکار را انجام دهید ) .
Radical suppression of the no-end problem for Labels/Symbolics address/content addressing (reformed syntax, but, as close as possible to NASM's).
حذف ریشه ای مشکلات بی پایان برای برچسبها / آدرسهای نمادین / آدرسدهی محتوا .
( گرامر بازنویسی شده ، اما تا حد امکان نزدیک به گرامر نسم ) .
Free open source program written in RosAsm assembly language, of course.
برنامه ی اوپن سورس آزاد نوشته شده در زبان اسمبلی روسسم ، البته .
This is too a relative guarantee that 'it works', at least for the auto-compilation of its own source, more than 3 Megabytes. -not a tiny demo-....
این همچنین یک گارانتی ( تضمین ) مرتبط است که " آن کار می کند " ، دستکم برای خودکامپایل سورس کد خودش ، که بیشتر از 3 مگابایت است . نه یک برنامه ی نمایشی کوچک ....
( در جدیدترین نسخه ی روسسم ، حجم سورس کد اسمبلر روسسم به 4.52 مگابایت می رسد .
جدیدترین نسخه ی اسمبلر روسسم با نام RosAsm2053g.EXE را می توانید از گیتهاب و همچنین از وبلاگ وحیدمی ( پست با آدرس RosAsmFull ) ، دانلود نمایید .
دانلود پکیج کامل اسمبلر روسسم حاوی تمام نسخه های قدیم و جدید این اسمبلر :
https://vahidmy.blog.ir/post/RosAsmFull
نام فایل سورس کد جدیدترین نسخه ی اسمبلر روسسم :
RosAsm2053g.asm
حجم فایل : 4.52 مگابایت .
اسمبلر روسسم می تواند این سورس حجیم را در زمانی بسیار کوتاه ، کامپایل و بیلد نموده و یک نسخه ی جدید از خودش بسازد !
این ثابت می کند که روسسم برخلاف برخی اسمبلرها ، تنها به تولید یکی دو فایل کوچک نمایشی ( برنامه ی معروف و بی مصرف و به درد نخور hello world ) بسنده نکرده بلکه آنقدر قوی و قدرتمند است که می تواند حتی سورس حجیم خودش را نیز براحتی کامپایل کند که این حرف ثابت می کند که روسسم یک اسمبلر قدرتمند و حرفه ای است و برای ساخت و تولید نرم افزارهای بزرگ و حرفه ای ویندوزی ، طراحی شده است و باید آنرا جدی بگیرید .
درواقع ، رنه تورنویس قصد دارد بگوید که روسسم اهل تولید فایلهای بی مصرف نمایشی مثل برنامه ی سلام جهان و ... نیست بلکه نرم افزارهای بزرگ و حرفه ای و کامل را نیز می تواند تولید کند و هرگز در این مورد یعنی کامپایل سورسهای حجیم ، از زبانهای سطح بالا شکست نمی خورد . وحیدمی ) .
~~~~~~~