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

ما هى طريقة كتابة برنامج يدعم sse

مغلق
بدأه ahmed_eltalkhawy في 29 أبريل 2005 · 7 رد · 748 مشاهدة · في قسم تكنولوجيا Microsoft .NET العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمه الله و بركاته

أبحث عن طريقة لكتابة كود assembly فى c++.net أو c#.net بحيث استفيد من الأوامر الجديدة التى تدعم sse, sse2, mmx

sign2.gif

رحم الله امرىء أهدى لى عيوبى

سبحان الله و بحمده سبحان الله العظيم

#2

لا يمكن كتابة كود بلغة الاسمبلي داخل ال Managed code، لذلك لا يمكن إستخدام ال سي شارب

أعتقد يمكن ذلك من خلال سي++ لكن عليك ان تكتب برنامجك ك unmanaged code يعني Native Exe

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

#3

أرجو أخى أن ترفق لى مثال به كود لc++.net و موجود به كود assembly حتى أفهم أكثر

و جزاك الله عنى خير الجزاء

sign2.gif

رحم الله امرىء أهدى لى عيوبى

سبحان الله و بحمده سبحان الله العظيم

#4

صراحة ليس لي أي خبرة في هذا الموضوع

لكن هذين المقالين ممكن ان يعطوك فكرة جيدة كبداية

Introduction to SSE Programming

Using SSE/SSE2 for optimization

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

#5

السلام عليكم

كنت قد رأيت الموضوع منذ فترة و وجدت بعدها الحل لكن عندما عدت لم أعثر على الموضوع لسبب أو لآخر!!! :wacko:

على كل حال الحل بسيط و يكمن في استخدام block هو asm__

هاك مثال على استخدامه قمت بتجربته على VC++.NET2003Enterprise و VC++.NET2005Express BETA2:

اقتباس
#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
	int n, m, Result;
	// How to perform an addition on two integers
	// Result = n + m

	__asm
	{
  MOV n, 202	// Store 202 in n
  MOV m, 125	// Store 125 in m
  MOV EAX, n	// Put the value of n in 32-bit register EAX
  MOV EBX, m	// Put the value of m in 32-bit register EBX
  ADD EAX, EBX	// Add the contents of EBX to the contents of EAX
    // and store the result in register EAX
  MOV Result, EAX	// Retrieve the contents of EAX and put it in Result
	}

	cout << "n = " << n << endl;
	cout << "m = " << m << endl;
	cout << "Result: " << Result << "\n\n";

	return 0;
}

لاحظ أنني قمت بإضافة السطر الأول

"include "stdafx.h#

حتى لا تضطر لإلغاء الـPrecompiled Headers في حال أردت تجربة المثال كما هو (لكن asm__ نفسه لا يحتاج الـ Precompiled Headers)، كذلك في بعض الأحيان عند استخدامه في Managed (CLR) Projects في VC++.NET2005 قد تحصل على warnning بخصوص asm__ كونه يتم عمل native compilation له، طبعا لا تهتم فأنت تعرف ذلك مقدما :) ، لاحظ أيضا أنه لنفس السبب لا يمكن كتابة Assembly داخل كود #C لأن الأخيرة تضمن الـ Type Safety لها من خلال كونها 100% Managed (أو 100% CLR Compliant) حتى بالنسبة للـ Pointers في الـ unsafe blocks of code.

أتمنى ألا يكون الرد متأخرا جدا (و أرجو من أي من المشرفين نقله إلى قسم C++.NET كونه أنسب له نوعا).

أخبرني بما يتم معك بإذن الله.

السلام عليكم,

تم تعديل هذه المشاركة بواسطة Mohamed Ahmed Meligy في 6 مايو 2005 في 19:45

,Regards

Mohamed Ahmed Meligy

Senior Software Engineer

SilverKey Tech - Egypt Branch

Computer Engineering Student

High Institute of Engineering, Culture and Science City

E-mail: Eng.Meligy@Gmail.com

Weblog: http://GeeksWithBlogs.NET/Mohamed

Mobile: +20 10 603 3013

#6

ألف شكر أخى محمد نسمان على هذين الموضوعين سأقراهم بعناية

بالنسبة للأخ Mohamed Ahmed Meligy

المشكلة فى البرنامج بتاعك انه لا يستعمل XMM registers و هى الخاصة بتقنية الSSE و لكن EAX مثلاً موجودة اعتباراً من 80386 و يمكن استخدامها من خلال VC++ 6 العادى

و لكنى اريد برنامج اخر بعد اذنك يستخدم هذه التقنية التى ظهرت عام 2001 و على ما اظن ان الطريقة ستكون مشابهة جداً و لكنها ستستخدم الأوامر الجديدة مثل MOVAPS , ADDPS , ADDSS و هكذا ...

أرجو أخى أن تساعدنى و مشكور مقدما على هذه الخدمة

sign2.gif

رحم الله امرىء أهدى لى عيوبى

سبحان الله و بحمده سبحان الله العظيم

#7

هل تقصد ال MMX ؟؟؟؟؟؟

لاني لا اذكر وجود Registers XMM

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#8

أخى bashmohandes

ال MMX هى 64 bit registers

و لكن XMM هى 128 bit registers

sign2.gif

رحم الله امرىء أهدى لى عيوبى

سبحان الله و بحمده سبحان الله العظيم

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

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