انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: سوالات در مورد C و ++C ,و اسمبلی .....  (دفعات بازدید: 11324 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین Ajax

  • Full Member
  • *
  • ارسال: 109
  • جنسیت : پسر
  • سقوط من در خودمه . سقوط ما مثله منه
سوالات در مورد C و ++C ,و اسمبلی .....
« : 17 مهر 1387، 11:47 ب‌ظ »
سلام..
در برنامه های C++ چه طور میشه دستورات اسمبلی نوشت ..
چرا وقتی یه ارایه به صورت  مثلا 
int a []
کامپایلر gcc  خطا می گیره
« آخرین ویرایش: 05 آبان 1387، 12:08 ق‌ظ توسط Ajax »
سقوط من در خودمه . سقوط ما مثله منه . مرگ روزای بچگی از روز به شب رسیدنه . دشمنیا مصیبته . سقوط ما مصیبته . مرگه صدا مصیبته  . مصیبته حقیقته .

آفلاین فاراب

  • High Hero Member
  • *
  • ارسال: 1352
  • آزادی
    • پروفایل لینکداین
پاسخ به: c++ , اسمبلی
« پاسخ #1 : 17 مهر 1387، 11:55 ب‌ظ »
در C به راحتی می‌شه اسمبلی نوشت.
آرایه اگر یک بعدی باشه، حتما باید طولش مشخص باشه و اگر دو بعدی باشه حداقل یکی از بعد‌ هاش. به این صورت که شما نوشتید، خطا میده. باید طول آرایه رو مشخص کنید. پیشنهاد میکنم یه ثابت به عنوان طول آرایه قرار بدبد و بالاتر مقدار دهی کنید.
Godisnowhere

آفلاین Ajax

  • Full Member
  • *
  • ارسال: 109
  • جنسیت : پسر
  • سقوط من در خودمه . سقوط ما مثله منه
پاسخ به: c++ , اسمبلی
« پاسخ #2 : 18 مهر 1387، 12:57 ق‌ظ »
در C به راحتی می‌شه اسمبلی نوشت.
در c++ چه طور ... چه جوری
سقوط من در خودمه . سقوط ما مثله منه . مرگ روزای بچگی از روز به شب رسیدنه . دشمنیا مصیبته . سقوط ما مصیبته . مرگه صدا مصیبته  . مصیبته حقیقته .

آفلاین فاراب

  • High Hero Member
  • *
  • ارسال: 1352
  • آزادی
    • پروفایل لینکداین
پاسخ به: c++ , اسمبلی
« پاسخ #3 : 18 مهر 1387، 01:16 ق‌ظ »
فکر می کنم با کلمه‌ی رزرو شده‌ی ‌asm بود به این ترتیب:
}asm
.
.
{

که در این بلاک کد های اسمبلی رو می‌نوشتیم. البته به روش تابع هم قابل پیاده سازی بود:
extern void a_func (void);

void main (void)
{
a_func ();
}

و حالا تعریف تابع a-func در اسمبلی:
NAME    A_FUNC

?PR?a_func?A_FUNC    SEGMENT CODE
        EXTRN   CODE (c_func)
        PUBLIC  a_func

        RSEG    ?PR?a_func?A_FUNC
a_func:
        USING   0
        LCALL   c_func
        RET

        END
« آخرین ویرایش: 18 مهر 1387، 01:18 ق‌ظ توسط فاراب »
Godisnowhere

آفلاین فاراب

  • High Hero Member
  • *
  • ارسال: 1352
  • آزادی
    • پروفایل لینکداین
پاسخ به: c++ , اسمبلی
« پاسخ #4 : 18 مهر 1387، 01:27 ق‌ظ »
جالبه بدونید کتابخانه ها و توبابع رزرو شده‌ی C با اسمبلی پیاده سازی میشن. برای نمونه تابع های add و print رو ببینید:
//add.c
int add(int i,int j)
{
   int p = i + j;
   return p;
}

//add.s
.globl add
add:
   pushl %ebp
   movl %esp, %ebp
   subl $4, %esp      //create space for integer p
   movl 8(%ebp),%edx   //8(%ebp) refers to i
   addl 12(%ebp), %edx   //12(%ebp) refers to j
   movl %edx, -4(%ebp)   //-4(%ebp) refers to p
   movl -4(%ebp), %eax   //store return value in eax
   leave         //i.e. to movl %ebp, %esp; popl %ebp ret

---------------------------------------------
//print.c
print(int i)
{
   printf("%d\n",i);
}

//main.s
.globl main
main:
   movl $123, %eax
   pushl %eax
   call print
   addl $4, %esp
   ret

از این سینتکس می تونید برای میکس کردن ‌C و اسمبلی استفاده کنید. و با کمی تغییر اونو به ++C تعمیم بدید.
موفق باشید.
Godisnowhere

آفلاین Ajax

  • Full Member
  • *
  • ارسال: 109
  • جنسیت : پسر
  • سقوط من در خودمه . سقوط ما مثله منه
پاسخ به: c++ , اسمبلی
« پاسخ #5 : 18 مهر 1387، 02:04 ق‌ظ »
متشکرم ...ا...
سقوط من در خودمه . سقوط ما مثله منه . مرگ روزای بچگی از روز به شب رسیدنه . دشمنیا مصیبته . سقوط ما مصیبته . مرگه صدا مصیبته  . مصیبته حقیقته .

آفلاین matlab

  • Newbie
  • *
  • ارسال: 7
پاسخ به: c++ , اسمبلی
« پاسخ #6 : 04 آبان 1387، 07:50 ب‌ظ »
 چرا بعضی برنامه ها رو که از dvd نصب میکنیم آیکون نداره
من می خوام avr با ubuntuپروگرام کنم codevision که تو wine کار نمی کنه gcc-avr که نصب میکنم آیکون نداره
البته غیر gcc-avr نرم افزارهای دیگه ای بوده که آیکون نداشته
چیکار کنم با avr atmega که بتونم با لینوکس پروگرامش

آفلاین Ajax

  • Full Member
  • *
  • ارسال: 109
  • جنسیت : پسر
  • سقوط من در خودمه . سقوط ما مثله منه
پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
« پاسخ #7 : 05 آبان 1387، 12:16 ق‌ظ »
سلام

version(Windows)
{
writefln("Press Key in windows %d:\t ",i);
k=getch();
}

version(linux)
{

writefln("Press Key in linux %d :\t",i);
k=getchar();
}

ایا در بالا دستور version  مربوط به زبان c هست  .؟
برنامه نویسی به زبان  c یا cpp در ویندوز با لینوکس چه تفاوتی با هم دارند؟
سقوط من در خودمه . سقوط ما مثله منه . مرگ روزای بچگی از روز به شب رسیدنه . دشمنیا مصیبته . سقوط ما مصیبته . مرگه صدا مصیبته  . مصیبته حقیقته .

آفلاین فاراب

  • High Hero Member
  • *
  • ارسال: 1352
  • آزادی
    • پروفایل لینکداین
پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
« پاسخ #8 : 05 آبان 1387، 11:55 ق‌ظ »
سلام

version(Windows)
{
writefln("Press Key in windows %d:\t ",i);
k=getch();
}

version(linux)
{

writefln("Press Key in linux %d :\t",i);
k=getchar();
}

ایا در بالا دستور version  مربوط به زبان c هست  .؟
برنامه نویسی به زبان  c یا cpp در ویندوز با لینوکس چه تفاوتی با هم دارند؟

C و ++C مستقل از سیستم عامل هستند. در مورد دستور ورژن هم در گوگل سرچ کنید.
Godisnowhere

آفلاین Ajax

  • Full Member
  • *
  • ارسال: 109
  • جنسیت : پسر
  • سقوط من در خودمه . سقوط ما مثله منه
getch , getchar
« پاسخ #9 : 05 آبان 1387، 01:10 ب‌ظ »
سلام.
فاراب جان ممنونم
#include <stdio.h>
 main()
{
printf("hello  Ajax ! \n");
getch();
return 0;
}
وقتی که برنامه بالا رو با gcc کامپایل می کنم .پیغام زیر رو چاپ میکنه .

/tmp/ccmnjIOi.o: In function `main':
hello.c:(.text+0x1e): undefined reference to `getch'
collect2: ld returned 1 exit status
ایا از دستور getch()درست استفاده ه نکردم یا اینکه باید فابل هدری  رو include کنم یا کامپیالر من مشکل داره ...??
ولی با دستور getchar() مشکلی ندارم.

تفاوت getch , getchar چیه ؟
« آخرین ویرایش: 05 آبان 1387، 01:13 ب‌ظ توسط Ajax »
سقوط من در خودمه . سقوط ما مثله منه . مرگ روزای بچگی از روز به شب رسیدنه . دشمنیا مصیبته . سقوط ما مصیبته . مرگه صدا مصیبته  . مصیبته حقیقته .

آفلاین Lucid Lynx

  • Sr. Member
  • *
  • ارسال: 295
  • جنسیت : پسر
  • ONLY FREEDOM
پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
« پاسخ #10 : 05 آبان 1387، 01:17 ب‌ظ »
سلام.
فاراب جان ممنونم
#include <stdio.h>
 main()
{
printf("hello  Ajax ! \n");
getch();
return 0;
}
وقتی که برنامه بالا رو با gcc کامپایل می کنم .پیغام زیر رو چاپ میکنه .در لینوکس میتوانید از curses.h استفاده کنید

/tmp/ccmnjIOi.o: In function `main':
hello.c:(.text+0x1e): undefined reference to `getch'
collect2: ld returned 1 exit status
ایا از دستور getch()درست استفاده ه نکردم یا اینکه باید فابل هدری  رو include کنم یا کامپیالر من مشکل داره ...??
ولی با دستور getchar() مشکلی ندارم.

تفاوت getch , getchar چیه ؟
تابع getch در فایل هدر conio.h قرار دارد که مخصوص ویندوز است شما باید آنرا حذف کنید
« آخرین ویرایش: 05 آبان 1387، 01:24 ب‌ظ توسط hardy »

آفلاین فاراب

  • High Hero Member
  • *
  • ارسال: 1352
  • آزادی
    • پروفایل لینکداین
پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
« پاسخ #11 : 05 آبان 1387، 01:42 ب‌ظ »
سلام.
فاراب جان ممنونم
#include <stdio.h>
 main()
{
printf("hello  Ajax ! \n");
getch();
return 0;
}
وقتی که برنامه بالا رو با gcc کامپایل می کنم .پیغام زیر رو چاپ میکنه .در لینوکس میتوانید از curses.h استفاده کنید

/tmp/ccmnjIOi.o: In function `main':
hello.c:(.text+0x1e): undefined reference to `getch'
collect2: ld returned 1 exit status
ایا از دستور getch()درست استفاده ه نکردم یا اینکه باید فابل هدری  رو include کنم یا کامپیالر من مشکل داره ...??
ولی با دستور getchar() مشکلی ندارم.

تفاوت getch , getchar چیه ؟
تابع getch در فایل هدر conio.h قرار دارد که مخصوص ویندوز است شما باید آنرا حذف کنید

+فکر میکنم این دو تابع تقریبا مشابه اند. stdio.h رو به stdio تغییر بدید شاید کار کرد. البته اگر ++C کار میکنید.
Godisnowhere

آفلاین Lucid Lynx

  • Sr. Member
  • *
  • ارسال: 295
  • جنسیت : پسر
  • ONLY FREEDOM
پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
« پاسخ #12 : 05 آبان 1387، 02:30 ب‌ظ »
سلام.
فاراب جان ممنونم
#include <stdio.h>
 main()
{
printf("hello  Ajax ! \n");
getch();
return 0;
}
وقتی که برنامه بالا رو با gcc کامپایل می کنم .پیغام زیر رو چاپ میکنه .در لینوکس میتوانید از curses.h استفاده کنید

/tmp/ccmnjIOi.o: In function `main':
hello.c:(.text+0x1e): undefined reference to `getch'
collect2: ld returned 1 exit status
ایا از دستور getch()درست استفاده ه نکردم یا اینکه باید فابل هدری  رو include کنم یا کامپیالر من مشکل داره ...??
ولی با دستور getchar() مشکلی ندارم.

تفاوت getch , getchar چیه ؟
تابع getch در فایل هدر conio.h قرار دارد که مخصوص ویندوز است شما باید آنرا حذف کنید

+فکر میکنم این دو تابع تقریبا مشابه اند. stdio.h رو به stdio تغییر بدید شاید کار کرد. البته اگر ++C کار میکنید.

در c++ استاندارد stdio.h به cstdio تبدیل میشود

آفلاین Ajax

  • Full Member
  • *
  • ارسال: 109
  • جنسیت : پسر
  • سقوط من در خودمه . سقوط ما مثله منه
پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
« پاسخ #13 : 05 آبان 1387، 11:02 ب‌ظ »
سلام.
برنامه ایی که کامپایل بشه دیگه مشکل اجرا تو محیط های مختلف نداره ؟
 و اگه تابع getch مربوط به کتابخانه ایی هست که مربوط به ویندوز می شه  . پس نمیشه این برنامه رو تو ویندوز نوشت و توی linux اجرا کرد .درسته ؟
میشه یک مقدار در مورد اینکه زبانی وابسته به سیستم عامل نیست  تو ضیح بدبد و اینکه ایا کتابخانه ها هم جزء زبان محسوب می شوند .
« آخرین ویرایش: 05 آبان 1387، 11:25 ب‌ظ توسط Ajax »
سقوط من در خودمه . سقوط ما مثله منه . مرگ روزای بچگی از روز به شب رسیدنه . دشمنیا مصیبته . سقوط ما مصیبته . مرگه صدا مصیبته  . مصیبته حقیقته .

آفلاین Ajax

  • Full Member
  • *
  • ارسال: 109
  • جنسیت : پسر
  • سقوط من در خودمه . سقوط ما مثله منه
پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
« پاسخ #14 : 07 آبان 1387، 01:38 ق‌ظ »
می خواستم بدونم گه چه  طور می تونم اسمبلی بنویسم ..
سقوط من در خودمه . سقوط ما مثله منه . مرگ روزای بچگی از روز به شب رسیدنه . دشمنیا مصیبته . سقوط ما مصیبته . مرگه صدا مصیبته  . مصیبته حقیقته .