Форум программистов, компьютерный форум, киберфорум
Assembler: MASM64, х64/long mode
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
2 / 2 / 1
Регистрация: 12.10.2013
Сообщений: 246
1

Дизассемблирование кода

11.11.2016, 15:57. Показов 4365. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C
1
2
3
4
5
6
7
8
9
10
11
 unsigned int Mas[10];
 unsigned int i;
int main() {
    for (i=0;i<9;i++) { //  Заменить цикл на do......while
        if ((i>3)&&(i!=6))
            Mas[i]=13*i+7;
        else
            Mas[i]=(int)25*i/3;
    }
    return 0;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
0x401340    push   %ebp
0x401341    mov    %esp,%ebp
0x401343    and    $0xfffffff0,%esp
0x401346    call   0x401990 <__main>
0x40134b    movl   $0x0,0x405060
0x401355    jmp    0x4013c9 <main+137>
0x401357    mov    0x405060,%eax
0x40135c    cmp    $0x3,%eax
0x40135f    jbe    0x40138e <main+78>
0x401361    mov    0x405060,%eax
0x401366    cmp    $0x6,%eax
0x401369    je     0x40138e <main+78>
0x40136b    mov    0x405060,%ecx
0x401371    mov    0x405060,%edx
0x401377    mov    %edx,%eax
0x401379    add    %eax,%eax
0x40137b    add    %edx,%eax
0x40137d    shl    $0x2,%eax
0x401380    add    %edx,%eax
0x401382    add    $0x7,%eax
0x401385    mov    %eax,0x405080(,%ecx,4)
0x40138c    jmp    0x4013bc <main+124>
0x40138e    mov    0x405060,%ecx
0x401394    mov    0x405060,%edx
0x40139a    mov    %edx,%eax
0x40139c    shl    $0x2,%eax
0x40139f    add    %edx,%eax
0x4013a1    lea    0x0(,%eax,4),%edx
0x4013a8    add    %edx,%eax
0x4013aa    mov    $0xaaaaaaab,%edx
0x4013af    mul    %edx
0x4013b1    mov    %edx,%eax
0x4013b3    shr    %eax
0x4013b5    mov    %eax,0x405080(,%ecx,4)
0x4013bc    mov    0x405060,%eax
0x4013c1    add    $0x1,%eax
0x4013c4    mov    %eax,0x405060
0x4013c9    mov    0x405060,%eax
0x4013ce    cmp    $0x8,%eax
0x4013d1    jbe    0x401357 <main+23>
0x4013d3    mov    $0x0,%eax
0x4013d8    leave
0x4013d9    ret
не понятно как происходит умножение, неясны строки с круглыми скобками и с тегами, сами названия функций понятны.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.11.2016, 15:57
Ответы с готовыми решениями:

Дизассемблирование кода команды с префиксом
Покопался в гугле, но ничего толкового не нашел по этому поводу. Помогите дизассемблировать...

Что выполняется в приведённом фрагменте кода (дизассемблирование программы на C++)
Подскажите, пожалуйста, что делает данный ASM-код. 0x4019df: c7 45 fc 01 00 00 00 ...

Дизассемблирование.
Помогите пожалуйста дизассемблировать данную часть Pascal программы. l:=0; g:=n; while g&gt;0...

Дизассемблирование
Добрый вечер, может кто-то помочь сделать данную задачку Выполнить дизассемблирование...

2
Заблокирован
11.11.2016, 17:15 2
Умножение на 25 оптимизировано компилятором как
25*i это { a = (i<<2)+i; (a<<2)+a }
Умножение на 13 сделано так:
13*i это ((i+i+i)<<2)+i

А деление на 3 оптимизировано через умножение, потому что на ia32 так эффективнее. Это называется reciprocal multiplication (как на русском я не знаею), по этой фразе в интернете можешь найти много информации и примеров, должно стать понятно.

Добавлено через 1 минуту
Цитата Сообщение от Demetro4ka Посмотреть сообщение
неясны строки с круглыми скобками
Ну, надо просто почитать как работает адресация. Там умножение и сложение.

Добавлено через 11 секунд
Цитата Сообщение от Demetro4ka Посмотреть сообщение
и с тегами
С какими тегами?
0
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
20.11.2016, 00:51 3
Цитата Сообщение от nimazzzy Посмотреть сообщение
Это называется reciprocal multiplication (как на русском я не знаею)
умножение на обратную величину
0
20.11.2016, 00:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2016, 00:51
Помогаю со студенческими работами здесь

Дизассемблирование архива.
Кто что может сказать о дизассемблировании архива?(rar, zip) Какую информацию таким путем можно...

Дизассемблирование команды jmp
Помогите, пожалуйста, написать дизассемблер для команды jmp, буду очень благодарен =)

Дизассемблирование приложения DotNet
Как дизассемблировать приложение DotNet чтобы видеть не CIL код, а обычные инструкции процессора IA?

Дизассемблирование програмы, написанной на C++
Учу C++ и сталкнулся с такой проблемой : открываю скомпилированую программу в OlliDbg и совершенно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru