الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما المشكلة بهذا الكود

مغلق
بدأه abdz في 1 يونيو 2006 · 8 رد · 736 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ما المشكلة بهذا الكود ، عندما اعمل له compile في ال VS6 يطلع لي error

#include<stdio.h>

unsigned long sp(void) 
{ 
	__asm__("mov %esp, %eax"); 
} 

void main(void) 
{ 
	printf("0x%x\n", sp()); 
}

error LNK2001: unresolved external symbol ___asm__
Debug/ff.exe : fatal error LNK1120: 1 unresolved externals
#2

ESP ليس مسجل لتضع فيه ما تريد ستتسبب باخطاء قاتلة في برنامجك, ابتعد عن ESP و EBP وافعل بالباقي ما تشاء

ايضا, الكود بين " " سيتنفذ على انه اسمبلي بحت صح .. اذن ليس هناك %eax بل

mov ebx, eax

الا لو كنت تستخدم AT&T syntax وليس Intel syntax.

اخيرا.. الخطا يخرج من استخدام __asm__ وليس تعليمات الاسمبلي.

http://msdn2.microsoft.com/en-us/library/45yd4tzz.aspx

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

تصحيح لمعلوماتك يااخ Xacker

الاخ حاول يضع قيمة sp إلى ax وهذا شيء طبيعي لاننا نتعامل مع الـAT&T Syntax

يعني الاوامر من اليسار الى اليمين بعكس Intel Syntax

#4
Xacker كتب:
الا لو كنت تستخدم AT&T syntax وليس Intel syntax.

حسنا لكن اقرا جيدا في المرة القادمة.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#5
abdz كتب:
ما المشكلة بهذا الكود ، عندما اعمل له compile في ال VS6 يطلع لي error

السلام عليكم

المثال فوق صحيح، لكنه لم يكتب ليترجم باستخدام VC6 بل مترجمات أخرى مثل GCC ....

في VC6 _asm جرب هذا :تكتب

#include<stdio.h>
unsigned long sp(void) 
{ 
_asm
{
mov eax,esp
}
} 
void main(void) 
{ 
	printf("0x%x\n", sp()); 
}

و ان لم يعمل جرب تغيير mov eax,esp ب

Push ESP
POP EAX
d4baa0.gif
#6

انا رديت حسب اسلوبك في الرد انت قلت ماتقدر تضع قيمة ax في الـsp سواء في intet او at/t

ليس انا من علي ان يقرا جيدا بل انت من عليك ان تكتب جيدا في المرة القادمة .. شكرا

محمد عبدالعزيز وهذا الي انا قلته ان المثال صحيح .. لكن الاخ Xacker مو مقتنع انه صحيح !!

#7
Sub-0 كتب:
محمد عبدالعزيز وهذا الي انا قلته ان المثال صحيح .. لكن الاخ Xacker مو مقتنع انه صحيح !!

على مهلك يا أخي

كلاكما صحيح من الزاوية التي نظر بها للأمر :)

d4baa0.gif
#8
اقتباس
الا لو كنت تستخدم AT&T syntax وليس Intel syntax.

شاملة لكل ما ذكرته قبلها يا عزيزي..

اقتباس
سواء في intet او at/t

لا اذكر اني قلت هذا.. اين هي :P

تم تعديل هذه المشاركة بواسطة Xacker في 5 يونيو 2006 في 16:25

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#9

انا احسبك ماقصدتها شاملة لكن مادامك قاصدها شاملة فجملتك صحيحة ..

<< احبك في الله يا Xacker

هذا الموضوع مغلق.

مواضيع مشابهة