Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Assembler

Страница: 1 | 2 |

 

  Вопрос: [ASM] Куда под виндой запиисываются возвращаемые з Добавлено: 14.09.08 06:05  

Автор вопроса:  Morpheus | Web-сайт: xury.zx6.ru
Быстрый вопрос, если кто знает и время не жалко на пару слов:

Когда я из NASM под виндой вызываю, я push'кой забиваю входные параметры в стек в обратном порядке. Потом делаю call и всё пучком. Надеюсь правильно, так как пока вроде работало (вчера начал). Но так много не сделаешь...

Вопрос:
а) Куда пишутся возвращаемые значения функций типо FindWindow?

б) А что если фукция заполняет переменные, например как GetCursorPos? Достаточно сделать

[source]
resd posx
resd posy

mov eax, posy
push eax
mov eax, posx
push eax
call GetCursorPos
[/source]

?

И ещё... все ли API входят в win32.lib? если нет, как линкить несколько файлов сразу?

Ответить

  Ответы Всего ответов: 19  

Номер ответа: 1
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #1
Добавлено: 14.09.08 06:06
Сорри, недописал в начале.. конечно вопрос про вызов API

Ответить

Номер ответа: 2
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #2
Добавлено: 14.09.08 11:18
Почти все апишки возвращают значение в EAX =)
Чтоб вернуть переменную, надо передать указатель на нее. В масме это push addr переменная.

Ответить

Номер ответа: 3
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 14.09.08 12:55
addr, что за словецо такое неасмовое, фу :) не привыкайте к нему, товарищи! любите offset & lea =)

Ответить

Номер ответа: 4
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #4
Добавлено: 14.09.08 16:54
а нафик аддр? в NASM если не ставишь квадратные скобки то он всегда адрес передаёт :-\

А в квадратных по значению:

mov eax, [esi+8]

двинет в eax _значение_ яйчейки памяти с адрсом esi+8... что прикольно NASM даже алгебру поддерживает внутри скобок :))

Я просто не знаю как в других ассемблерах.

Executioner пишет:
Почти все апишки возвращают значение в EAX

А если возвращается 2 значения? оно разбивается на старшие и младшие 16 бит?

Ответить

Номер ответа: 5
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #5
Добавлено: 14.09.08 16:54
блин, смайлик с языком убойный!

Ответить

Номер ответа: 6
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #6
Добавлено: 14.09.08 19:09
ну а как получить адрес того же [esi+8] :) ? Все правильно, lea, а как получит адресс переменной в .data(?), верно offset.

алгебра это не алгебра, это компилятор попросту вычисляет выражение в качестве константы.

если два значения, то все равно eax/rax... просто указывает он скорее всего на область памяти.

Ответить

Номер ответа: 7
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #7
Добавлено: 14.09.08 19:26
лол... адрес [esi+8] = esi+8 :))) я так в стек лажу, например:

  1.  
  2. pusha
  3. mov eax, [esp+36]



А чё за ассемблер разрешает делать переменные в секции .data ? я обычно их в .bss делаю. Да, кстати, у тебя "?" в сообщении - это символ из асма или русского языка? а то в НАСМ они запрещены :(

Ответить

Номер ответа: 8
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #8
Добавлено: 14.09.08 21:27
Ну да вроде
  1. .data?
  2.    hInstance HINSTANCE ?
  3.    CommandLine LPSTR ?



[wasm.ru]
DATA - Эта секция содеpжит инициализиpованные данные вашей пpогpаммы.
  .DATA? - Эта секция содеpжит неинициализиpованные данные вашей пpогpаммы. Иногда вам нужно только *пpедваpительно* выделить некотоpое количество памяти, но вы не хотите инициализиpовать ее. Эта секция для этого и пpедназначается. Пpеимущество неинициализиpованных данных следующее: они не занимают места в исполняемом файле. Hапpимеp, если вы хотите выделить 10.000 байт в вашей .DATA? секции, ваш exe-файл не увеличиться на 10kb. Его pазмеp останется таким же. Вы всего лишь говоpите компилятоpу, сколько места вам нужно, когда пpогpамма загpузится в память.[/wasm.ru]

Ответить

Номер ответа: 9
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #9
Добавлено: 14.09.08 21:33
Morpheus пишет:
#
# pusha
# mov eax, [esp+36]
 

а зачем так убийствено????
чем тебе pop не угодил??

Ответить

Номер ответа: 10
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #10
Добавлено: 14.09.08 21:41
сори #9 бред :) не розобралса что написано #7

Ответить

Номер ответа: 11
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #11
Добавлено: 14.09.08 21:41
а, ну это в макросе или субрутине - входные параметры передаются через стек и чтоб всё было пучком, вначале я пишу pusha а в конце popa (каждый раз ржу на этими псевдокомандами)... а потом чтоб достать нижний горшок из стопки как в операции Ы , я делаю [esp+36], [esp+40] итд.. :)

По поводу "?"... по моему насм их не поддержиавет.

Ответить

Номер ответа: 12
Автор ответа:
 D o c a l



ICQ: 408802757 

Вопросов: 76
Ответов: 985
 Web-сайт: www.doc-source.pp.net.ua/
 Профиль | | #12
Добавлено: 15.09.08 00:28
ну я лично х то что я писал справедливо для masm

Ответить

Номер ответа: 13
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #13
Добавлено: 15.09.08 11:54
Morpheus пишет:
лол... адрес [esi+8] = esi+8 ))

Ну и как ты его вычислишь?

Не айс:
mov eax, esi
add esi, 8

Айс:
lea eax, [esi+8]

Ответить

Номер ответа: 14
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #14
Добавлено: 16.09.08 01:33
sne пишет:
любите offset & lea

Я люблю!! Честно! =)

Ответить

Номер ответа: 15
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #15
Добавлено: 16.09.08 05:01
классно! не знал про леа... а чё такое оффсет?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам