[Asm] Прочитать параметры - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Программирование / Programming

Программирование / Programming
Ищете помощи в написании программы, есть сложность в выполнении задания (в институте и т.д.), пожалуйста, спросите у нас в данном форуме и мы обязательно вам поможем.

Ответ
Опции темы
Непрочитано 27.08.2016, 20:13   #1
Аватар для Sojang
Пользователь

Автор темы (Топик Стартер) [Asm] Прочитать параметры

Допустим есть функция onLog на асм

onLog:
Свернуть ↑Развернуть ↓

из С++ юзаю так
onLog("Test message");
Code: C++
Вопрос в том как в асм прочитать строку "Test message"?
__________________
Лучше взять и изобрести завтрашний день, чем переживать о том, что вчерашний был так себе.
Sojang вне форума Ответить с цитированием
Непрочитано 27.08.2016, 20:20   #2
Аватар для Zubastic
ZG troll squad

По умолчанию Re: [Asm] Прочитать параметры

Что значит "прочитать"? Получить указатель?
__________________
Zubastic вне форума Ответить с цитированием
Непрочитано 27.08.2016, 20:28   #3
Аватар для Sojang
Пользователь

Автор темы (Топик Стартер) Re: [Asm] Прочитать параметры

Цитата:
Сообщение от Zubastic Посмотреть сообщение
Что значит "прочитать"? Получить указатель?
ну коротко говоря нужно занести строку из параметров в переменную msg
__________________
Лучше взять и изобрести завтрашний день, чем переживать о том, что вчерашний был так себе.
Sojang вне форума Ответить с цитированием
Непрочитано 27.08.2016, 20:45   #4
Пользователь

По умолчанию Re: [Asm] Прочитать параметры

Зависит от соглашения вызова. Если fastcall то указатель на строку будет в регистре ECX.

https://ru.wikipedia.org/wiki/%D0%A1...BE%D0%B2%D0%B5
flopix вне форума Ответить с цитированием
Непрочитано 27.08.2016, 20:53   #5
Аватар для Sojang
Пользователь

Автор темы (Топик Стартер) Re: [Asm] Прочитать параметры

Цитата:
Сообщение от flopix Посмотреть сообщение
Зависит от соглашения вызова. Если fastcall то указатель на строку будет в регистре ECX.

https://ru.wikipedia.org/wiki/%D0%A1...BE%D0%B2%D0%B5
fastcall
Делаю вот так вот, но в Msg пишет что то другое..явно не мою строку.
Туда пишет какие то странные символы..
mov [OFFSET msg], ecx
Code: ASM
__________________
Лучше взять и изобрести завтрашний день, чем переживать о том, что вчерашний был так себе.
Sojang вне форума Ответить с цитированием
Непрочитано 27.08.2016, 22:05   #6
Пользователь

По умолчанию Re: [Asm] Прочитать параметры

Попробуйте указатель на указатель.

Ну или чтобы не гадать посомтрите под отладчиком. Может быть значение в стеке.
flopix вне форума Ответить с цитированием
Непрочитано 27.08.2016, 22:16   #7
Аватар для Akumu
Пользователь

По умолчанию Re: [Asm] Прочитать параметры

Вы пытаетесь вызвать "Printf" с нужным параметром я так понимаю. Код функции Printf покажите.
Akumu вне форума Ответить с цитированием
Непрочитано 27.08.2016, 22:22   #8
Аватар для Sojang
Пользователь

Автор темы (Топик Стартер) Re: [Asm] Прочитать параметры

Цитата:
Сообщение от Akumu Посмотреть сообщение
Вы пытаетесь вызвать "Printf" с нужным параметром я так понимаю. Код функции Printf покажите.
Если статически прописать msg db "Test message", 0 то функция отобразит то что нужно, а если я пытаюсь делать как сейчас
 
extern "C" void __fastcall onLog(const char* Format);
onLog("Test message");
 
Code: C++
 
.const
Init dq 140019EA8h
Printf dq 140009148h
.data?
msg db ?
.code
onLog proc
mov   [offset msg], rcx  
xor     ecx, ecx
call Init
mov     rcx, rax 
lea     rdx, msg
call Printf
ret
onLog endp
end
 
 
Code: ASM
то выдает какие то левые странные символы..
__________________
Лучше взять и изобрести завтрашний день, чем переживать о том, что вчерашний был так себе.
Sojang вне форума Ответить с цитированием
Непрочитано 27.08.2016, 23:05   #9
Аватар для Sojang
Пользователь

Автор темы (Топик Стартер) Re: [Asm] Прочитать параметры

Собсна пофиксил так
 
mov   rax, [rcx]
mov   [offset msg], rax
 
Code: ASM
Однако теперь что то творится с размером слова..
onLog("Test\n");
Code: C++
Если так писать то все окей, а если:
onLog("Test text\n");
Code: C++
то остается только Test tex
есть у кого идеи как исправить?
__________________
Лучше взять и изобрести завтрашний день, чем переживать о том, что вчерашний был так себе.
Sojang вне форума Ответить с цитированием
Непрочитано 28.08.2016, 00:07   #10
Аватар для Akumu
Пользователь

По умолчанию Re: [Asm] Прочитать параметры

Цитата:
Сообщение от Sojang Посмотреть сообщение
есть у кого идеи как исправить?
Использовать функцию strcpy, вместо копирования первых 8 байт регистром rax.
https://github.com/Emeraude/MinilibC...ree/master/src к примеру

Добавлено через 42 секунды
Только буффер сразу сделайте достаточно большим

Последний раз редактировалось Akumu; 28.08.2016 в 00:08. Причина: Добавлено сообщение
Akumu вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прочитать строку в Say2 mego4el Lineage II 8 29.08.2012 06:12
Параметры таблицы heroes slimline Lineage II 11 11.05.2012 19:37
Параметры базы. FilipMorris Архив 0 25.10.2011 16:24
Где поменять параметры ФА и КОЛ? operatorr Lineage II 7 11.04.2009 15:41
[help]Параметры запуска явы на Fedora 9 Stema Lineage II 0 19.03.2009 18:13


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 01:20. Часовой пояс GMT +3.

Вверх