Форум программистов, компьютерный форум CyberForum.ru

Assembler или C++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Советы начинающему http://www.cyberforum.ru/cpp-beginners/thread896705.html
Здравствуйте дорогие форумчане, отнедавна решил воплотить мечту своего детства и попробовать стать программистом, осенью на первый курс заочки, вследствие чего уже сейчас хочу выучить как можно больше, так как проучась два года в меде понял, что от нашего образования можно получить из полезного только диплом. Может для кого-то это покажется диким, но до этого момента, я всего пару раз работал в...
C++ Вызов функции (шаблона) Здравствуйте. Есть шаблон, никак не получаются его вызвать. template <class T> void print(const T &a) { int b; cout <<"Input number:"; cin >> b; const unsigned *p = reinterpret_cast<const unsigned*>(&a); for (int i = 0; i < sizeof(T); i++) http://www.cyberforum.ru/cpp-beginners/thread896703.html
C++ Вычислить сопротивление по рисунку
Используя функцию, которая вычисляет супротивлення электрической цепи, который состоит из двух резисторов, вычислить общее сопротивление четырех проводников с электрическими супротивлення, соединенных между собой по схеме, показанной на рисунке: Параметрами функции являются величины супротивлень и тип соединения (последовательное или параллельное). Функция проверяет корректность параметров: если...
Вычислить интеграл C++
Помоги пожалуйста))
C++ Наибольшее количество одинаковых элементов http://www.cyberforum.ru/cpp-beginners/thread896680.html
Составить программу для подсчета наибольшего количества одинаковых элементов, расположенных последовательно, в массиве для каждого из одномерных массивов Х и Y . Инициализацию, вывод элементов массива, их обработку организовать в отдельных функциях.
C++ Подсчет нечетных элементов Сформировать динамический массив В размера m × n из случайных целых чисел. Составить программу для подсчета произведения нечетных элементов двумерной матрицы В, используя функцию для обработки массива. подробнее

Показать сообщение отдельно
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
10.06.2013, 08:45     Assembler или C++
Цитата Сообщение от YYwww Посмотреть сообщение
привёл два примера работы на C/C++ и Assembler:
Примеры демонстрируют совершенно разные вещи - пример на Си показывает функцию, а на асме - вызов этой функции. В связи с этим вопрос - в чем собственно вопрос?

Добавлено через 1 минуту
Цитата Сообщение от YYwww Посмотреть сообщение
для ядра, хотя бы.
Если имеется ввиду ядро ОС, то тот же линух на Си написан. Там есть ассемблер, но его ничтожно мало по сравнению с объемом Си кода.

Добавлено через 2 минуты
Assembler
1
2
3
4
5
6
7
8
9
10
call_cfunct:
  push 3          ; c
  push 2          ; b
  push 1          ; a
  call cfunct     ; call the C function
                  ; now eax holds the return value
  add esp, 12     ; stack cleanup, we did the mess,
                  ; so we clean it up and remember
                  ; we pushed 3 integers (32bit, dwords)
                  ; that means it's 12 bytes
если написать это на ассемблере, то код так и останется в таком виде, а если написать на Си, то современные оптимизирующие компиляторы (gcc например) могут сделать из этого кода такой
Assembler
1
mov eax, 6
поэтому утверждение, что на ассемблере лучше довольно спорно.

Добавлено через 12 минут
Вот проверил в MinGW. Из такого кода
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
int foo (int a1, int a2, int a3)
{
    return a1 + a2 + a3;
}
 
int main()
{
    std::cout << foo(1, 2, 3);
}
компилятор сделал
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
_main:
LFB984:
    .cfi_startproc
    pushl   %ebp
    .cfi_def_cfa_offset 8
    .cfi_offset 5, -8
    movl    %esp, %ebp
    .cfi_def_cfa_register 5
    andl    $-16, %esp
    subl    $16, %esp
    call    ___main
    movl    $6, 4(%esp)
    movl    $__ZSt4cout, (%esp)
    call    __ZNSolsEi
    xorl    %eax, %eax
    leave
    .cfi_restore 5
    .cfi_def_cfa 4, 4
    ret
ключевое место здесь это
Assembler
1
movl    $6, 4(%esp)
о чем я и писал выше.
Для тех, кто ничего не понял, поясню, компилятор сделал такой код
C++
1
2
3
4
int main()
{
    std::cout << 6;
}
Хотя я сути вопроса до сих пор не понял, может вопрос не в этом?
 
Текущее время: 19:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru