Visual Studio 2015 ile Win64 Assembly Programlama

Kategori Assembly
16.06.2016
3356 Okunma


Esen!
Arkadaşlar, RadASM ile x86 Assembly için SCTZine Assembly sayfamızı ziyaret edebilirsiniz.
Bugün ise ilk defa 64 bitlik assembly programlama yapacağız. 64 bit programlama için birkaç değişik yaklaşım var. Bu yazıda C++ ile beraber assembly nasıl kodlanır ona bakacağız. Saf x64 Assembly derslerim de olacak. Hepsi zamanla.

Çalışma Ortamı (Gereksinimler):
Microsoft Windows 10
Microsoft Visual Studio 2015
Microsoft SDK
Not: Bunlar “minimum” gereksinimler değil. Windows 8.1 ve Visual Studio 10 ile de bu çalışmayı yapabilirsiniz.

1. Microsoft Visual Studio’yu açıyoruz ve “Yeni Proje” yi seçiyoruz. Ekrana gelen pencereden “Empty Project” yani boş projeyi seçiyoruz. (Ben C++ kodlarken de çoğu zaman bu seçeneği kullanırım)
vsx6401

2. Solution Explorer yan barından projemizin adına sağ tıklayalım ve “Add > New Item” seçelim. Açılan pencereden bir C++ dosyası yaratalım. Ben ana C++ dosyalarıma genelde main ya da projenin adını veriyorum.

vsx6402

3. Yeni C++ dosyamızın içerisine şu kodları girelim:

#include <iostream>
using namespace std;

extern "C" int GetValueFromASM();
//extern komutu bir yordamın başka bir yerden çağrılabilmesini sağlar
//mesela bir C++ yordamının C'den çağrılabilmesi ya da
//yukardaki gibi assembly yordamının C++'dan çağrılabilmesi gibi

int main(){
	cout << "ASM dosyasindan gelen deger: " << GetValueFromASM() << endl;
	cin.get();
	return 0;
}

İkinci maddenin başındaki gibi tekrar bir dosya oluşturalım ama bu sefer cpp uzantılı değil de asm uzantılı olsun. Artık iki dosyamız var main.cpp ve source.asm. Yeni yarattığımız asm dosyasının içerisine şunları yazalım:

	.code
	GetValueFromASM PROC
		mov rax, 11223344
		ret
	GetValueFromASM endp
	end

Bunları yazmak yeterli değil derleme için arkadaşlar; çünkü Visual Studionunda ayarlanması gerekiyor.

4. Şimdi Configuration Manager’a geçmemiz gerekiyor. Yine “Solution Explorer” yan çubuğundan “Solution”umuza sağ tıklayalım.
DİKKAT projemize tıklamıyoruz. Solution ve Proje farklı şeyler. Bir solution içerisinde birden çok proje barındırabilirsiniz.
Açılan mönüden “Properties” yani özellikleri seçelim. Yeni bir pencere gelecek, pencerenin sağ üst köşesindeki “Configuration Manager” düğmesine tıklayalım:
vsx6403
Resimde gördüğünüz gibi platformu x64 olarak seçiyoruz. Ben ayarı “Release“de bıraktım ama “Debug” da seçilebilir. Şu an için önemli değil. İkisi de çalışacaktır.

5. Bu ayarı da yaptık ama bitmedi. “Solution Explorer” yan cubuğumuzdan projemize sağ tıklayalım ve “Build Dependencies > Build Customizations“a tıklayalım. Yeni bir pencere açılacak:
vsx6404
Resimde de gördüğünüz gibi masm‘ı seçili hale getiriyoruz. Daha önceki assembly yazılarımda olduğu gibi burada da MASM sözdizimini kullanacağım. Bu işaretleme MASM sözdizimi için gerekli.

6. Son bir ayarlamamız daha kaldı. Yine “Solution Explorer”da projemizin altındaki assembly dosyamıza sağ tıklayalım ve “Properties” yani özelliklerini açalım. Yeni bir pencere gelecek:
vsx6405
Bu penceredeki “Item Type: Microsoft Macro Assembler” olarak değiştirelim.

7. Tüm dosyalarımız yukardaki gibi ise artık programı hatasız derleyebiliriz.

Zaman buldukça yazılara devam edeceğim. Sağlıcakla kalın.

[dm]130[/dm]

Comments of this post

Henüz yorum bulunmuyor!