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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: Ajax در 17 مهر 1387، 11:47 ب‌ظ

عنوان: سوالات در مورد C و ++C ,و اسمبلی .....
ارسال شده توسط: Ajax در 17 مهر 1387، 11:47 ب‌ظ
سلام..
در برنامه های C++ چه طور میشه دستورات اسمبلی نوشت ..
چرا وقتی یه ارایه به صورت  مثلا 
int a []
کامپایلر gcc  خطا می گیره
عنوان: پاسخ به: c++ , اسمبلی
ارسال شده توسط: فاراب در 17 مهر 1387، 11:55 ب‌ظ
در C به راحتی می‌شه اسمبلی نوشت.
آرایه اگر یک بعدی باشه، حتما باید طولش مشخص باشه و اگر دو بعدی باشه حداقل یکی از بعد‌ هاش. به این صورت که شما نوشتید، خطا میده. باید طول آرایه رو مشخص کنید. پیشنهاد میکنم یه ثابت به عنوان طول آرایه قرار بدبد و بالاتر مقدار دهی کنید.
عنوان: پاسخ به: c++ , اسمبلی
ارسال شده توسط: Ajax در 18 مهر 1387، 12:57 ق‌ظ
در C به راحتی می‌شه اسمبلی نوشت.
در c++ چه طور ... چه جوری
عنوان: پاسخ به: c++ , اسمبلی
ارسال شده توسط: فاراب در 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
عنوان: پاسخ به: c++ , اسمبلی
ارسال شده توسط: فاراب در 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 تعمیم بدید.
موفق باشید.
عنوان: پاسخ به: c++ , اسمبلی
ارسال شده توسط: Ajax در 18 مهر 1387، 02:04 ق‌ظ
متشکرم ...ا...
عنوان: پاسخ به: c++ , اسمبلی
ارسال شده توسط: matlab در 04 آبان 1387، 07:50 ب‌ظ
 چرا بعضی برنامه ها رو که از dvd نصب میکنیم آیکون نداره
من می خوام avr با ubuntuپروگرام کنم codevision که تو wine کار نمی کنه gcc-avr که نصب میکنم آیکون نداره
البته غیر gcc-avr نرم افزارهای دیگه ای بوده که آیکون نداشته
چیکار کنم با avr atmega که بتونم با لینوکس پروگرامش
عنوان: پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
ارسال شده توسط: Ajax در 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 در ویندوز با لینوکس چه تفاوتی با هم دارند؟
عنوان: پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
ارسال شده توسط: فاراب در 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 مستقل از سیستم عامل هستند. در مورد دستور ورژن هم در گوگل سرچ کنید.
عنوان: getch , getchar
ارسال شده توسط: Ajax در 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 چیه ؟
عنوان: پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
ارسال شده توسط: Lucid Lynx در 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 قرار دارد که مخصوص ویندوز است شما باید آنرا حذف کنید
عنوان: پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
ارسال شده توسط: فاراب در 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 کار میکنید.
عنوان: پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
ارسال شده توسط: Lucid Lynx در 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 تبدیل میشود
عنوان: پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
ارسال شده توسط: Ajax در 05 آبان 1387، 11:02 ب‌ظ
سلام.
برنامه ایی که کامپایل بشه دیگه مشکل اجرا تو محیط های مختلف نداره ؟
 و اگه تابع getch مربوط به کتابخانه ایی هست که مربوط به ویندوز می شه  . پس نمیشه این برنامه رو تو ویندوز نوشت و توی linux اجرا کرد .درسته ؟
میشه یک مقدار در مورد اینکه زبانی وابسته به سیستم عامل نیست  تو ضیح بدبد و اینکه ایا کتابخانه ها هم جزء زبان محسوب می شوند .
عنوان: پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
ارسال شده توسط: Ajax در 07 آبان 1387، 01:38 ق‌ظ
می خواستم بدونم گه چه  طور می تونم اسمبلی بنویسم ..
عنوان: پاسخ به: سوالات در مورد C و ++C ,و اسمبلی .....
ارسال شده توسط: Master در 09 آبان 1387، 08:24 ب‌ظ
سلام .دوستان در مورد تایپ فارسی در برنامه کنسولی تحت لینوکس . استرینگ از نوع چار معمولی هم جواب میده یا باید wchar-t استفاده کرد (تو ویندوز که ورت مینگ دابلیو جی سی سی جواب نمیده! ) تو لینوکس اینطور که پیداست سالیان سال هست که مبحث یونیکود پیادهسازی شده . حالا موندم .برای رسیدن به این هدف از کدوم استفاده کنم ! یک یه راهنمایی جامع اگه میتونه بکنه ممنون میشم