Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать консольное приложение на асме? 
:(
    Опции темы
ТарасАтавин
Дата 2.9.2013, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 26.8.2013

Репутация: нет
Всего: нет



Как создать консольное windows x64 приложение на асме? С чего начинать?

Это сообщение отредактировал(а) ТарасАтавин - 2.9.2013, 13:16


--------------------
Не так всё плохо, как оно есть на самом деле.
PM MAIL   Вверх
bsa
Дата 2.9.2013, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: нет
Всего: 196



ТарасАтавин, лично я считаю, что начать стоит с посещения психиатра... Ничего личного, просто возможно, тебе эту прогу на ассемблере писать даже не нужно.

На ассемблере пишут маленькие вставки в код имеющейся программы на языке высокого уровне. В крайнем случае (низкоуровневая системная библиотека), отдельные функции.
PM   Вверх
ТарасАтавин
Дата 3.9.2013, 05:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 370
Регистрация: 26.8.2013

Репутация: нет
Всего: нет



Цитата(bsa @  2.9.2013,  18:09 Найти цитируемый пост)
ТарасАтавин, лично я считаю, что начать стоит с посещения психиатра
Тебе.

Добавлено @ 05:23
Цитата(bsa @  2.9.2013,  18:09 Найти цитируемый пост)
Ничего личного
Научись различать "всё" и "ничего".

Добавлено @ 05:24
Цитата(bsa @  2.9.2013,  18:09 Найти цитируемый пост)
просто возможно, тебе эту прогу на ассемблере писать даже не нужно.
Не возможно.

Добавлено @ 05:27
Цитата(bsa @  2.9.2013,  18:09 Найти цитируемый пост)
На ассемблере пишут маленькие вставки в код имеющейся программы на языке высокого уровне. В крайнем случае (низкоуровневая системная библиотека), отдельные функции. 
А ещё на асм компилируются проги с c++. В кодах пишется абсолютно всё, просто не всегда вручную, а ближайшее, что можно взять за первый шаг при разбирательстве с кодом, - это асм. Но если ограничиваться вставками и функциями, то так ни когда и не соберёшь приложение. Но твоему понимаю это не доступно. Как по-твоему пишут компиляторы и компоновщики, если даже не пытаются изучить создание "скелета" приложения на асме? Ни как что ли?


Это сообщение отредактировал(а) ТарасАтавин - 3.9.2013, 06:13


--------------------
Не так всё плохо, как оно есть на самом деле.
PM MAIL   Вверх
DarthTon
Дата 3.9.2013, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 7.2.2009

Репутация: нет
Всего: 6



Ну коль таки действительно необходимо...

1. Ознакомиться с особенностями х64 - http://msdn.microsoft.com/en-us/library/7kcdt6fy.aspx
2. Выбрать диалект ассемблера c поддержкой х64 - MASM/FASM/NASM/YASM
3. Написать код. Пример для NASM:
Код

; imports
extern GetStdHandle
extern WriteFile
extern ExitProcess

;global symbols
global main

section .data
    message:
        db 'Hello, World!', 0
    message_end:

section .text
main:
    ; QWORD  bytes;    
    mov rbp, rsp
    
    ; space for register spill
    sub rsp, 38h

    ; hStdOut = GetstdHandle( STD_OUTPUT_HANDLE )
    mov rcx, -11
    call GetStdHandle
    mov  rcx, rax    

    ; WriteFile(hstdOut, message, strlen(message), &bytes, 0);
    push 0
    lea r9, [rbp - 8]
    mov r8, (message_end - message)
    mov rdx, message
    call WriteFile
    
    
    ; ExitProcess(0)
    mov rcx, 0
    call ExitProcess
    
    ; restore stack ptr 
    add rsp, 38h
    retn 10h

4. Скомпилить и слинкать получившийся объектный файл (я использовал линкер и либы от VC++ 2012).
Код

nasm.exe -g -o main.obj -fwin64 main.asm
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64\link.exe" /NOLOGO /DEBUG /MACHINE:X64 /NODEFAULTLIB
 /SUBSYSTEM:CONSOLE /OUT:x64Console.exe /PDB:"x64Console.pdb" /ENTRY:main main.obj kernel32.lib

5. ??????
6. PROFIT

Это сообщение отредактировал(а) DarthTon - 3.9.2013, 10:44
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.0972 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.