PDA

View Full Version : ایجاد فایل با پسوند sys با c



shahmohammadi
دوشنبه 19 دی 1390, 11:57 صبح
سلام.
من تو اینترنت زیاد گشتم ولی چیزی در این مورد پیدا نکردم.
کسی از دوستان می دونه چطور برنامه ای که با سی نوشتیم رو به صورت sys ذخره کنیم.
(کامپایلر تربو سی داس).

alamate_aoal
دوشنبه 19 دی 1390, 15:18 عصر
بنده اطلاعاتی درباره درایور نویسی ندارم اما این رو به یقین میتونم بگم که با توربو سی نمیتونید همچین کاری کنید
از سایت مایکروسافت WDK رو دانلود کن.

r00tkit
دوشنبه 19 دی 1390, 16:19 عصر
فایل sys فایل های درایور هستش برای نوشتن باید از WDk استفاده کنی کلا معماری فرق داره
برای چی می خوای این کار رو بکنی ؟

این مثال رو نگاه کن ساده ترین چیز ممکن :
http://www.driverentry.com/resources/helloworld.htm

shahmohammadi
دوشنبه 19 دی 1390, 20:51 عصر
درایور نیست.
توی اسملی که راحت می شه ساختش نیاز به چیز زیادی هم نداشت. فقط تو خط فرمان به جای bin اینو می نوشتم:
nasm.exe -f bin Boot.asm -o CODE.SYS
توی کد اسمبلی هم چیزی اضافه یا کم نمی کردم. چند تا کد ساده بودند، مثلا در یه سایتی این کد رو می اومد به صورت sys کامپایل می کرد:
code segment para public use16 '_CODE'
.386
assume cs:code, ds:code, es:code, ss:code
org 0
Start:
mov ax,cs
mov ds,ax
mov es,ax
mov si,offset err_msg
call DisplayMsg
spin:
jmp spin


;************************************************* ***************************
; DisplayMsg
;
; displays the ASCIIZ message to the screen using int 10h calls
;
; Entry:
; ds:si ==> ASCII string
;
; Exit:
;
; Destroyed:
; none
;
;
;************************************************* ***************************
DisplayMsg proc
push ax bx si
cld
nextchar:
lodsb
or al,al
jz alldone
mov bx,0007h
mov ah,0eh
int 10h
jmp nextchar
alldone:
pop si bx ax
ret
DisplayMsg endp


err_msg db "Operating system found and loaded.",0

code ends
END

چند تا مثال دیگه هم هستند. حالا من می خام تو همین مورد به جای اسمبلی از سی استفاده کنم.

alamate_aoal
دوشنبه 19 دی 1390, 23:43 عصر
میخوای فایل کامپایل شده رو روی محیط بدون سیستم عامل اجرا کنی ؟
توربو سی مال این حرفها نیست:بامزه:

shahmohammadi
دوشنبه 19 دی 1390, 23:51 عصر
همین کار رو می کنم.
مثلا نمی شه که بیایم با تربو سی برنامه بنویسیم و بعد با exe2bin که فقط اسمشو شنیدم تبدیلش کنیم به فایل .bin و بعد اسمشو تغییر بدیم.
همین الان خوندم که (اینجا (http://www.nasm.us/doc/nasmdoc7.html#section-7.1)) فایل های کام و سیس و بین، هیچی نیستند و فقط کدند.

اگه این روش نمی شه پس توی کدوم محیط سی میشه این جور برنامه ها رو نوشت.

alamate_aoal
سه شنبه 20 دی 1390, 00:11 صبح
اینجا (http://www.codeproject.com/KB/tips/boot-loader.aspx)یه نمونه کد هست.

alamate_aoal
سه شنبه 20 دی 1390, 00:16 صبح
نوشتن یک کرنل ساده به زبان c (http://www.google.com/#hl=en&cp=28&gs_id=5r&xhr=t&q=%D9%86%D9%88%D8%B4%D8%AA%D9%86+%DB%8C%DA%A9+%DA% A9%D8%B1%D9%86%D9%84+%D8%B3%D8%A7%D8%AF%D9%87+%D8% A8%D9%87+%D8%B2%D8%A8%D8%A7%D9%86+c&pq=%D9%86%D9%88%D8%B4%D8%AA%D9%86+%DB%8C%DA%A9+%DA %A9%D8%B1%D9%86%D9%84+%D8%A8%D9%87+%D8%B2%D8%A8%D8 %A7%D9%86+c&pf=p&sclient=psy-ab&source=hp&pbx=1&oq=%D9%86%D9%88%D8%B4%D8%AA%D9%86+%DB%8C%DA%A9+%DA %A9%D8%B1%D9%86%D9%84+%D8%B3%D8%A7%D8%AF%D9%87+%D8 %A8%D9%87+%D8%B2%D8%A8%D8%A7%D9%86+c&aq=f&aqi=&aql=&gs_sm=&gs_upl=&bav=on.2,or.r_gc.r_pw.,cf.osb&fp=868032395a21deba&biw=1280&bih=880)

shahmohammadi
سه شنبه 20 دی 1390, 00:47 صبح
از بین کتابهایی که تو گوگل بود (پست8) فقط این لینک دانلود شد.
نوشته بود GCC برای اینکار مناسبه:
gcc -c kernel.c -o kernel.o
ممنون.

mahmood0197
سه شنبه 09 اسفند 1390, 15:46 عصر
حتما این آدرسو بخون متوجه میشی
http://arcsinos.blogfa.com/post-181.aspx