![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 20.03.2018
Сообщений: 9
|
![]()
Здравствуйте, я пытаюсь создать консольное приложение на ASM для windows. MASM32 откомпилировал и отлинковал мой ASM код без единой ошибки. Но EXE зависает. При проходе EXE в OllyDBG видно, что в main вход нормальный, но при первом (и всех последующих) call-s СИ-функций (FOPEN, FSCANF, FPRINTF, MALLOC) при call происходит переход за пределы памяти программы и OllyDBG зависает на первом же call. Не пойму, как справится с этой ошибкой - ведь линк прошел без единого сообщения об ошибке. Все внешние ссылки были разрешены ОК. Посмотрите, пожалуйста, мои ASM, OBJ,EXE в облаке по адресу https://drive.google.com/drive/folde...i?usp=sharingh Заранее спасибо!
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,828
|
![]()
1. А зачем вы выкладываете листинг сгенерированный С/С++ компилятором вместо исходника? При этом выдавая его за свой код?
2. Линк без ошибок не говорит, что программа корректна и зкогда-нибудь завершится. Невыделенная память, выход за границы, вечные циклы и блокировки и т.д. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 20.03.2018
Сообщений: 9
|
![]()
Я не совсем еще пока разбираюсь в АСМ - поэтому сначала написал код на СИ и получил сгенерированный код на АСМ. В чем моя вина? Кстати, исходный СИ код идет абсолютно без ошибок в Microsoft Visual Studio 2017 - так почему сгенерированный им ассемблер не идет? Я пробовал определить внешние функции СИ как: EXTRN C (имя):FAR - не помогло. Линкер создает точно одинаковый EXE, как бы не определять эти СИ функции. А вы что - видите какие-то ошибки в асм коде? Их там не может быть, потому что эквивалентная ему СИ прг идет без ошибок.
|
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 20.03.2018
Сообщений: 9
|
![]()
Я вам конкретно могу сказать - где ошибка - но она не моя и не ошибка АСМ кода - это ошибка скорее всего линка. Вы это можете видеть на скриншоте OllyDBG. В месте, где идет call FOPEN = call DWORD PTR DS:[401036] ( это по IP=00401773) если выполнить этот call, то происходит переход на адрес 202425FF - что вне пределов исходной программы. Как это исправить?
|
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,828
|
![]()
Вы не указали соглашения о вызовах, вы неправильно определили указатели и вызовы функций (нафига вы это делали раз у вас есть инклуды и либы с масм32 я так и не понял), и т.д.
Цитата:
![]() Не заниматься ерундой, пытаясь без знаний асма разобрать выхлоп оптимизирующего компилятора с включенными наворотами. Возьмите ваш исходник на С и прям по нему пишите вызовы на асм. масм32 достаточно высокоуровневый, чтобы такой простейший код мало отличался от С. |
|
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
![]()
..а что вообще должна делать-то программа?
сгенерированый сишным компилем ASM не будет работать. Его надо править.
Нашедшего выход - затаптывают первым..
|
![]() |
![]() |
![]() |
#7 | |
Новичок
Джуниор
Регистрация: 20.03.2018
Сообщений: 9
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#8 |
Новичок
Джуниор
Регистрация: 20.03.2018
Сообщений: 9
|
![]()
мне не нравится тон ваших ответов. Я пытаюсь понять, где майкрософт генерирует асм код, неадекватный СИ коду. В ассемблере я немного разбираюсь. Если вы считаете, что вижуал СИ сгенерировал ошибочный асм код - то , пожалуйста, вы ( как профессионал) покажите мне ошибки в сгенерированном асм коде. И не надо грубить.
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,828
|
![]()
Как мне нравятся идиоты, которые возомнили из себе невесть что. Я вам еще раз повторю: компилятор сгенерировал все правильно, это вы не учли кучу параметров и неправильно все это собрали.
|
![]() |
![]() |
![]() |
#10 |
Новичок
Джуниор
Регистрация: 20.03.2018
Сообщений: 9
|
![]()
.. да. вы видимо правы... так я сюда пришел. чтобы вы помогли мне разобраться, какие конкретно параметры я не учел при компиляции и линковке ( учтите - ни асм компилятор (ml.exe) ни линкер не выдали ни одной ошибки (!) ) - впрочем, если вы не хотите мне в этом помочь. то не надо - другие помогут. Но грубить и оскорблять-то зачем? Вы что - так самоутверждаетесь? Меня трудно обидеть.. я философски отношусь к таким , как вы.
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ARC GNU 1.1.0 Eclipse не компилирует exe файл | victor5133 | Общие вопросы C/C++ | 3 | 22.07.2014 19:45 |
Параметр /section в link.exe из masm32 | DinoAsm | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 7 | 12.09.2011 20:33 |
Возможен ли отлов ошибок "чужих" программ без скана экрана на предмет окон-ошибок? | Человек_Борща | Общие вопросы Delphi | 4 | 21.04.2011 00:18 |
masm32 v9. не линкует программу | Alcash | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 7 | 23.06.2008 09:57 |
Каким образом Delphi компилирует EXE? | Jupiter | Общие вопросы Delphi | 4 | 26.03.2008 16:52 |