Отладка кода C, связанного с кодом сборки в Visual Studio 2010 - PullRequest
0 голосов
/ 20 ноября 2011

Я пытаюсь связать одну функцию, разработанную на ассемблере, с расширениями .s для главной программы на С-коде

Мне нужно отладить процедуру сборки, чтобы увидеть мой стек и регистры. Как я могу это сделать?

int main() {
    char str[] = "remembering toUpperSelective exercise..";
    const char* findChars = "re";

    int result = toUpperSelective(str, findChars);
    printf("Result Expected is %d and got %d \n", 14, result);
    printf("Printing result: %s \n", str);
    getchar();
    return 0;
}

как мне сказать компилятору искать в местоположении X и перестать выдавать эту ошибку? (Linking)

Ответы [ 3 ]

0 голосов
/ 20 ноября 2011

Visual Studio не использовал, чтобы идти с ассемблером. Это означает, что вы либо используете встроенную функцию ассемблера компилятора C, либо устанавливаете отдельный ассемблер.

Если вы используете отдельный ассемблер, вам нужно добавить исходный код в ваш проект и создать для него пользовательские правила сборки, которые вызывают ассемблер с правильными флагами. Visual Studio сможет обрабатывать фактические ссылки. Что касается отладки, то отладчик Visual Studio способен отображать ассемблерный код из объектного кода, но выбранный вами ассемблер должен выводить информацию об отладке в формате, который Visual Studio может распознать, если вы хотите правильно видеть все метки и тому подобное.

0 голосов
/ 21 ноября 2011

хорошо. Я пытался сделать это в Visual Studio, но прежде чем пытаться использовать отладчик Insight без успеха на платформе Windows.

Я задал еще один вопрос в StackOverflow до этого, но я уже достиг того, чего хочу. Нить здесь .

Я связываю сборку с кодом C и отлаживаю процедуру Insight C + My Assembly. Спасибо!

0 голосов
/ 20 ноября 2011

Вы, безусловно, можете использовать команды языка ассемблера (одиночные или в виде блоков) в своем C-коде.Посмотрите на C-функцию ASM, которая используется для запуска инструкции на ассемблере.

Я не уверен, будет ли точка останова работать на встроенном языке ассемблера.Что вы можете сделать, это определить обычную функцию.Внутри этой функции используйте свой сборочный блок ASM, чтобы написать свою сборку.Если код сложный и вы действительно хотите его отладить, тест проводится отдельно на языке ASM.Может быть, вам понадобится симулятор для процессора, который вы используете.Можете ли вы указать, что именно будет делать ASM?

Я знаю, что это не правильный ответ, но, по крайней мере, он выведет вас на правильный путь.

Эта тема можетбыть несколько полезным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...