Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать консольное приложение Windows x64? 
:(
    Опции темы
bems
Дата 4.9.2013, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(ТарасАтавин @  4.9.2013,  08:25 Найти цитируемый пост)
А на уровне операций это как выглядит? 
как на уровне oпераций выглядит передача параметра в функцию зависит от конвенции вызова. на х64 используется регистр, место в стеке всё равно резервируется (с выравниванием) и делается call

Цитата(ТарасАтавин @  4.9.2013,  08:25 Найти цитируемый пост)
Специфично ли это именно для c/c++? А на паскале как возвращается значение? 

и на паскале ExitProcess
потому что win api един

Цитата(ТарасАтавин @  4.9.2013,  08:32 Найти цитируемый пост)
А при чем здесь файлы? Клавиатурный ввод с командной строки и вывод на экран. Потоки std::cin и std::cout, а не std::ifstream s1 и std::ofstream s2. Или имеется ввиду фиктивный файл CON, или как его там ещё?
стандартный вводной поток в винде это тоже "файл". он может совпадать с CON а может и не совпадать

Цитата(ТарасАтавин @  4.9.2013,  08:37 Найти цитируемый пост)
А где бы почитать описание формата заголовка PE?
http://msdn.microsoft.com/en-us/windows/hardware/gg463119.aspx


ты бы для начала написал компилятор какого-нить простого языка, хоть бы бейсика, для опыта. а то с плюсами ты завязнешь на 15 лет, и так ничего и не сделаешь

Это сообщение отредактировал(а) bems - 4.9.2013, 11:18


--------------------
Обижено школьников: 8
PM MAIL   Вверх
LeonidPr
Дата 5.9.2013, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

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



Разложу ваши вопросы, которые вы задали в первом посте в куче по пунктам и попробую ответить
Цитата(ТарасАтавин @  3.9.2013,  09:49 Найти цитируемый пост)

1. С чего начинать создание приложения на ASM и в опкоде и изучение вопроса?
2. Надо ли вообще раскладывать регистры по сегментам и как?
3. Как это выглядит в коде исполняемого файла?
4. Каким образом возвращается значение при завершении приложения?
5. Как получить доступ к параметрам функции main (содержащей точку входа)?
6. Как указать точку входа на ассемблере и в коде исполняемого файла?
7. Как организован стек в Windows-приложении x64?
8. Как на низком уровне организован консольный ввод/вывод? 
9. Надо ли специально регистрировать экспортируемые функции в GetProcAdress? И как?

1. Начинать с написания кода на языке ассемблер как ни странно. В опкодах писать не советую- ибо тяжко (на то компиляторы/ассемблеры и нужны). Изучение начинать с курса по компиляторам (на Intuit вроде есть), книг по компиляторам, этапов компиляции (Лексический анализ, синтаксический анализ, кодогенерация+оптимизация) книга Дракона вам в руки + статьи по этому делу
2. Регистры по сегментам??? вы о чем? адресное пространство вроде как плоское...
3. Читайте доки по формату PE, там все разжевано (книжка есть Исследование программ Win32 до дизассемблера и отладчика
4.  Отвечали уже - в параметре ExitProcess
5. В стеке лежат
6. В ассемблере end <точка входа> в конце .asm файла, в коде - см п.3
7. для Win 64 не программировал, но думаю, что вряд ли сильно отличается от Win32 - ESP и push/pop
8. MSDN
9.Нет. Если вы создаете DLL там есть секция экспорта
--------------------
pkunzip.zip
PM MAIL   Вверх
bems
Дата 5.9.2013, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(LeonidPr @  5.9.2013,  12:43 Найти цитируемый пост)
7. для Win 64 не программировал, но думаю, что вряд ли сильно отличается от Win32 - ESP и push/pop

ну там нет "цепочки ebp"

Цитата(LeonidPr @  5.9.2013,  12:43 Найти цитируемый пост)
8. MSDN
ввод-вывод может быть перенаправлен, нельзя предполагать что стандартный вывод это всегда консоль





--------------------
Обижено школьников: 8
PM MAIL   Вверх
LeonidPr
Дата 5.9.2013, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

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



Цитата(bems @  5.9.2013,  15:18 Найти цитируемый пост)
ну там нет "цепочки ebp"

Буду знать, спасибо.
Цитата(bems @  5.9.2013,  15:18 Найти цитируемый пост)
ввод-вывод может быть перенаправлен, нельзя предполагать что стандартный вывод это всегда консоль

Согласен. Просто вопрос был именно про консоль.
--------------------
pkunzip.zip
PM MAIL   Вверх
ТарасАтавин
Дата 7.9.2013, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(_zorn_ @  4.9.2013,  08:51 Найти цитируемый пост)
Что что ?
Ну как в досе: сегмент, зовут его так то, регистр у него такой то.

Добавлено через 5 минут и 44 секунды
Цитата(_zorn_ @  4.9.2013,  08:58 Найти цитируемый пост)
А на остальные вопросы, есть такое страшное словосочетание - конвенция вызовов
Ещё бы знать соглашение о вызовах для нужной функции. Их ведь много разных.



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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



В винде плоское адресное пространство.
Исполняемый файл организован не в сегменты а в секции, адреса которых не должны быть в регистрах. Сегментные регистры используются, но подругому


--------------------
Обижено школьников: 8
PM MAIL   Вверх
ТарасАтавин
Дата 7.9.2013, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(_zorn_ @  4.9.2013,  08:35 Найти цитируемый пост)
код Ассемблера
1:
2:
push 0
call ExitProccess
Она системная?



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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



да http://msdn.microsoft.com/en-us/library/wi...v=vs.85%29.aspx
и push на х32, а на х64 другая конвенция вызова http://blogs.msdn.com/b/oldnewthing/archiv...1/14/58579.aspx


--------------------
Обижено школьников: 8
PM MAIL   Вверх
ТарасАтавин
Дата 7.9.2013, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(bems @  4.9.2013,  10:35 Найти цитируемый пост)
ты бы для начала написал компилятор какого-нить простого языка, хоть бы бейсика, для опыта
Ты уж определись: или простого, ли не спроста интерпретируемого бейсика.


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


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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(ТарасАтавин @  7.9.2013,  13:38 Найти цитируемый пост)
Ещё бы знать соглашение о вызовах для нужной функции. Их ведь много разных.
на х64 только одна



--------------------
Обижено школьников: 8
PM MAIL   Вверх
ТарасАтавин
Дата 7.9.2013, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(bems @  4.9.2013,  10:35 Найти цитируемый пост)
 а то с плюсами ты завязнешь на 15 лет, и так ничего и не сделаешь
Я вообще не собираюсь писать ещё один компилятор плюсов.



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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(ТарасАтавин @  7.9.2013,  13:47 Найти цитируемый пост)
Ты уж определись: или простого: ли не спроста интерпретируемого бейсика.
есть и компиляторы бейсика. и есть среди них даже такие, которые не представляют из себя замаскированный интерпретатор smile
ну напиши Паскаля

Добавлено через 16 секунд
Цитата(ТарасАтавин @  7.9.2013,  13:48 Найти цитируемый пост)
Я вообще не собираюсь писать ещё один компилятор плюсов.
окей



--------------------
Обижено школьников: 8
PM MAIL   Вверх
ТарасАтавин
Дата 7.9.2013, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(bems @  7.9.2013,  13:49 Найти цитируемый пост)
есть и компиляторы бейсика. 
я одним даже компилил. Но почему то в отличие от паскаля/C/C++ для него всё таки исконно преобладали интерпретаторы. Не потому ли, что сложно компилить язык, с объявлением переменной при первом присваивании, чудным присваиванием через LET, с зависимостью типа переменной от её имени и тому подобными дебрями?

Добавлено @ 13:54
Цитата(bems @  7.9.2013,  13:49 Найти цитируемый пост)
ну напиши Паскаля
Я на Вирата похож?

Добавлено через 3 минуты
Цитата(bems @  7.9.2013,  13:44 Найти цитируемый пост)
 Сегментные регистры используются, но подругому 
Как? И надо ли их куда то назначать и что то в них загружать?


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


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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



Цитата(ТарасАтавин @  7.9.2013,  13:53 Найти цитируемый пост)
чудным присваиванием через LET
это не влияет на то как это компилировать, просто особенности синтаксиса

Цитата(ТарасАтавин @  7.9.2013,  13:53 Найти цитируемый пост)
с зависимостью типа переменной от её имени и тому подобными дебрями?
не дебри, и это тоже не трудно обработать

Цитата(ТарасАтавин @  7.9.2013,  13:53 Найти цитируемый пост)
Я на Вирата похож?
на самом деле ты похож на излишне деятельного подростка. вопросы которые ты задаешь ясно показывают что гонору у тебя больше чем знаний.

Добавлено через 6 минут и 40 секунд
Цитата(ТарасАтавин @  7.9.2013,  13:53 Найти цитируемый пост)
Как?
например в х32 регистр FS указывает на TIB, соответственно используется при установке SEH-фреймов, работе с tls и тд



--------------------
Обижено школьников: 8
PM MAIL   Вверх
ТарасАтавин
Дата 7.9.2013, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(bems @  7.9.2013,  14:00 Найти цитируемый пост)
на самом деле ты похож на излишне деятельного подростка. вопросы которые ты задаешь ясно показывают что гонору у тебя больше чем знаний.
У кандидата наук мало знаний? Гонора же не хватило даже на то, чтоб подавать на доцента.



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

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

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


 




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


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

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