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

Помогите написать очень маленькую ассемблерную вставку - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
14.10.2011, 10:39     Помогите написать очень маленькую ассемблерную вставку #1
я слышал что по новым стандартам вот такая конструкция не работает
int n;
cin >> n;
int m[n]
пишет размер статистического масива должен быть константой )))))
а вот если
const int n=1;
и тут нужна асемблерная вставка которая может поменять n
int m[n]

буду искрене благодарен если поможете
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2011, 10:39     Помогите написать очень маленькую ассемблерную вставку
Посмотрите здесь:

C++ Важно помогите написать прогу. Очень легкую Пожалуйста, сижу на экзамене
Написать функцию, которая переводит введенную пользователем маленькую букву в большую C++
C++ Помогите пожалуйста написать программу на C++ ( очень нужно )
C++ Не могу запустить ассемблерную вставку на c++
Как сделать ассемблерную вставку? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
14.10.2011, 10:41     Помогите написать очень маленькую ассемблерную вставку #2
Зачем, если есть динамический массив?
C++
1
2
3
int n;
cin >> n;
int *m = new int[n];
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
14.10.2011, 10:42     Помогите написать очень маленькую ассемблерную вставку #3
есть такая штука, которую нужно применять ТОЛЬКО в самых крайних случаях.
const_cast называется, она снимает const с переменной.
она используется тогда, когда нельзя обойти ситуацию другими путями
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
14.10.2011, 10:47  [ТС]     Помогите написать очень маленькую ассемблерную вставку #4
mimicria, да просто там кое какие умники меня на форуме запресовали что должен быть констанктой размер масива а на моём компиляторе это не обезательно
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
14.10.2011, 10:49     Помогите написать очень маленькую ассемблерную вставку #5
Цитата Сообщение от Van111 Посмотреть сообщение
и тут нужна асемблерная вставка которая может поменять n
и ты что, правда думаешь, что это позволит тебе изменить размер массива? Он как был массивом одного элемента, так им и останется. И любые попытки получить доступ к любому элементу массива, кроме первого, приведут к UB.

Используй динамические массивы, Люк
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
14.10.2011, 10:50  [ТС]     Помогите написать очень маленькую ассемблерную вставку #6
кстати я если
int n[5]={0,1,2,3,4,5}
int *n=new int[10] - первые 6 значений помоему же не уничтожатся?
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
14.10.2011, 10:50     Помогите написать очень маленькую ассемблерную вставку #7
Цитата Сообщение от Van111 Посмотреть сообщение
mimicria, да просто там кое какие умники меня на форуме запресовали что должен быть констанктой размер масива а на моём компиляторе это не обезательно
это так и есть, а то, что у тебя оно работает - это не более, чем счастливая случайность. А я бы на твоем месте научился бы слушать, что говорят умные люди, а не пороть чушь.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
14.10.2011, 10:51     Помогите написать очень маленькую ассемблерную вставку #8
Цитата Сообщение от Van111 Посмотреть сообщение
C++
1
2
int n[5]={0,1,2,3,4,5}
int *n=new int[10] - первые 6 значений помоему же не уничтожатся?
нет, ты тут получишь всего-лишь ошибку компиляции
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
14.10.2011, 10:52  [ТС]     Помогите написать очень маленькую ассемблерную вставку #9
Цитата Сообщение от Nameless One Посмотреть сообщение
Люк
что это значит
мне просто хочется доказать что компилятор можно обойти
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
14.10.2011, 10:53     Помогите написать очень маленькую ассемблерную вставку #10
Цитата Сообщение от Van111 Посмотреть сообщение
да просто там кое какие умники меня на форуме запресовали что должен быть констанктой размер масива а на моём компиляторе это не обезательно
чувствуешь разницу
C++
1
2
3
int n;
cin >> n;
int *m = new int[n];
и
C++
1
2
3
int n;
cin >> n;
int m[n];
?
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.10.2011, 10:54     Помогите написать очень маленькую ассемблерную вставку #11
Цитата Сообщение от Van111 Посмотреть сообщение
мне просто хочется доказать что компилятор можно обойти
доказывай... кодами
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
14.10.2011, 10:54     Помогите написать очень маленькую ассемблерную вставку #12
Цитата Сообщение от Van111 Посмотреть сообщение
мне просто хочется доказать что компилятор можно обойти
ты просто не понимаешь принципа выделения памяти в С/С++
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
14.10.2011, 10:58  [ТС]     Помогите написать очень маленькую ассемблерную вставку #13
Nameless One,
а как увеличить размер уже созданого массива?
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
14.10.2011, 10:59     Помогите написать очень маленькую ассемблерную вставку #14
на это есть vector
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
14.10.2011, 11:01  [ТС]     Помогите написать очень маленькую ассемблерную вставку #15
кто может сделать ассемблерную вставку которая может изменить значений константы?
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
14.10.2011, 11:03     Помогите написать очень маленькую ассемблерную вставку #16
Цитата Сообщение от Van111 Посмотреть сообщение
кто может сделать ассемблерную вставку которая может изменить значений константы?
Вы совершаете большую ошибку. От изменения размера константы новая память под массив не выделится
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,585
Записей в блоге: 12
14.10.2011, 11:06  [ТС]     Помогите написать очень маленькую ассемблерную вставку #17
Цитата Сообщение от mimicria Посмотреть сообщение
Вы совершаете большую ошибку. От изменения размера константы новая память под массив не выделится
я щас хочу понять- создали переменную в стеке как до неё добраться?
 Комментарий модератора 
Веди себя спокойней
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
14.10.2011, 11:08     Помогите написать очень маленькую ассемблерную вставку #18
Цитата Сообщение от Van111 Посмотреть сообщение
а как увеличить размер уже созданого массива?
В Си, например:
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define SZ1 3
#define SZ2 6
 
int main()
{
    int* array = malloc(SZ1 * sizeof(int)); /* выделяем память под массив из SZ1 элементов типа int */
    size_t i;
    
    for(i = 0; i < SZ1; ++i)
    array[i] = 1;       /* заполняем его единицами */
    
    array = realloc(array, SZ2 * sizeof(int)); /* расширяем его до размера SZ2 элементов */
 
    for(i = SZ1; i < SZ2; ++i)
    array[i] = 2;       /* заполняем расширенную часть двойками */
    
    for(i = 0; i < SZ2; ++i)
    printf("%d ", array[i]);
 
    putchar('\n');
    
    free(array);
    return 0;
}
Результат:
Код
[nameless@desktop c]$ ./sample 
1 1 1 2 2 2 
[nameless@desktop c]$
В С++ лучше пользоваться каким-нибудь контейнерным типом из STL, тем же вектором, как предложили выше
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
14.10.2011, 11:09     Помогите написать очень маленькую ассемблерную вставку #19
Цитата Сообщение от Van111 Посмотреть сообщение
я щас хочу понять- создали переменную в стеке как до неё добраться?
по ее идентификатору
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.10.2011, 11:11     Помогите написать очень маленькую ассемблерную вставку
Еще ссылки по теме:

пишу программу на С++, и делаю в ней ассемблеровскую вставку. Возможно ли в этой _asm вставке сделать С++ вставку? C++
C++ Сделать из assembler кода ассемблерную вставку в C++
C++ Нужно переделать С++ функцию на ассемблерную вставку

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.10.2011, 11:11     Помогите написать очень маленькую ассемблерную вставку #20
Nameless One, обычно страхуются таким образом:
C
1
2
3
tmp = realloc(array, SZ2 * sizeof(int));
if (tmp)
...
чтобы не потерять массив array в случае невозможности выделения новой памяти
Yandex
Объявления
14.10.2011, 11:11     Помогите написать очень маленькую ассемблерную вставку
Ответ Создать тему
Опции темы

Текущее время: 21:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru