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

Чем же макрос define так плох? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ begin http://www.cyberforum.ru/cpp-beginners/thread83539.html
Люди, я собираюсь научиться программировать на Си,подскажите, с чего лучше всего начать в C++, и в какой среде мне будет проще обучаться программировать (Visual C++, Microsoft Visual Studio C++, C++...
C++ Как передать вектор из main() во внутреннюю функцию ? Нужно передать вектор из main в функцию gen_binar_sq , записать в него элементы, и получить в main заполненый вектор и распечатать элементы. #include <stdio.h> #include <stdlib.h> #include... http://www.cyberforum.ru/cpp-beginners/thread83535.html
Функция: удаление узла дерева со всеми потомками C++
подскажите код функции которая удаляет элемент дерева со всеми его потомками NODE *SEARCH(char *key, NODE *root) { NODE *cur=root; if(cur==NULL) { cout<<"\n Data Base is empty.";...
C++ Определение заглавных букв в файле.
Нужна программа на Си которая определяет слово с самым большим количеством заглавных букв(если таковых много, следует выдать их все).Помогите пожалуйста.Заранее благодарен.
C++ Отличие С от С++ http://www.cyberforum.ru/cpp-beginners/thread83520.html
В чем отличие языка С от С++
C++ Сортировка строк матрицы по возрастанию первых элементов Составить программу, которая переформирует заданную матрицу так, чтобы ее строки расспалагались в порядке возрастания их первых элементов. Помогите пожалуйста, я сколько не пытался, ничего не... подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
24.10.2015, 17:21
hoggy, вот тебе альтернативные ссылки с тем же кодом (раз уж у тебя эта не открывается): Раз, Два, Три.

Теперь про место для значения. Код:
C++
1
2
3
4
5
#include <cstdio>
 
int main() {
    printf( "%d\n", 42 );
}
Ассемблерный выхлоп:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
main:                                   # @main
    push    rbp
    mov rbp, rsp
    sub rsp, 16
    lea rdi, qword ptr [.L.str]
    mov esi, 42
    mov al, 0
    call    printf
    mov esi, 0
    mov dword ptr [rbp - 4], eax # 4-byte Spill
    mov eax, esi
    add rsp, 16
    pop rbp
    ret
 
.L.str:
    .asciz  "%d\n"
Убираем константу:
C++
1
2
3
4
5
#include <cstdio>
 
int main() {
    printf( "\n" );
}
Асм:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
main:                                   # @main
    push    rbp
    mov rbp, rsp
    sub rsp, 16
    lea rdi, qword ptr [.L.str]
    mov al, 0
    call    printf
    mov ecx, 0
    mov dword ptr [rbp - 4], eax # 4-byte Spill
    mov eax, ecx
    add rsp, 16
    pop rbp
    ret
 
.L.str:
    .asciz  "\n"
Как видишь, строки mov esi, 42 уже нет. Т.е. размер кода стал меньше.

Как вообще можно было предположить, что значение явно присутствующее в исходном файле, может выводиться на консоль и при этом НИГДЕ не храниться? Оно что из космоса прилетает?

Заметь, никаких адресов, о которых ты говорил, тут не используется, сугубо значение константы.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru