С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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... http://www.cyberforum.ru/cpp-beginners/thread896703.html
C++ Вычислить сопротивление по рисунку
Используя функцию, которая вычисляет супротивлення электрической цепи, который состоит из двух резисторов, вычислить общее сопротивление четырех проводников с электрическими супротивлення,...
Вычислить интеграл C++
Помоги пожалуйста))
C++ Наибольшее количество одинаковых элементов http://www.cyberforum.ru/cpp-beginners/thread896680.html
Составить программу для подсчета наибольшего количества одинаковых элементов, расположенных последовательно, в массиве для каждого из одномерных массивов Х и Y . Инициализацию, вывод элементов...
C++ Подсчет нечетных элементов Сформировать динамический массив В размера m × n из случайных целых чисел. Составить программу для подсчета произведения нечетных элементов двумерной матрицы В, используя функцию для обработки... подробнее

Показать сообщение отдельно
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,389
Записей в блоге: 2
Завершенные тесты: 1
10.06.2013, 08:45
Цитата Сообщение от 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;
}
Хотя я сути вопроса до сих пор не понял, может вопрос не в этом?
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.