Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для Хрисипп
19 / 29 / 13
Регистрация: 09.02.2016
Сообщений: 230

Почему, при попытке "взять" адрес переменной,компилятор ее не положит на регистр?

16.05.2016, 16:17. Показов 902. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
почему, при попытке "взять" адрес переменной,компилятор ее не положит на регистр
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.05.2016, 16:17
Ответы с готовыми решениями:

Почему не меняется адрес в памяти у переменной при перезапуске программы?
Доброго времени суток, недавно наткнулся на тему "указатели", и почему то у ребят на видосах при каждом перезапуске пограммы меняется адрес...

взять адрес переменной
если & стоит перед переменной, то это читается как - " взять адрес этой переменной" а если он стоит после ?

Почему не могу кинуть файлик по Blue Tooth? Всё обнаруживает. Но при попытке передачи пишет "Адрес несовместим с выбранным протоколом."
Почему не могу кинуть файлик по Blue Tooth? Всё обнаруживает. Но при попытке передачи пишет "Адрес несовместим с выбранным...

9
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
16.05.2016, 16:26
а как взять адрес регистра?
0
Заблокирован
16.05.2016, 16:35
Христос Воскрес! Во истину воскрес! Адрес берется нормально. Пример:
C++
1
2
3
int* p;
int n = 5;
p = &n;
- этот код будет работать. n - целое число 5. В p будет адрес n.
0
 Аватар для Хрисипп
19 / 29 / 13
Регистрация: 09.02.2016
Сообщений: 230
16.05.2016, 16:37  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
а как взять адрес регистра?
логично было бы &,но выходит никак. я вопрос и задал, потому что не понимаю.
получается это очередное ограничение программиста от бесполезных возможностей?

Добавлено через 51 секунду
Цитата Сообщение от Programmist5 Посмотреть сообщение
Пример:
это переменная в основной памяти, а не в регистре
0
Заблокирован
16.05.2016, 16:38
Какие регистры Вас интересуют? EAX и EBX что-ли? Так это ассемблер батенька.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
16.05.2016, 17:34
Цитата Сообщение от Хрисипп Посмотреть сообщение
логично было бы &,но выходит никак. я вопрос и задал, потому что не понимаю.
& - это синтаксис, который берет адрес ячейки памяти, поэтому если нужен адрес переменной, то компилятор располагает эту переменную в памяти, а не на регистре. По сути пихать переменную в регистр это оптимизация, которая применима при некоторых условиях и одно из условий - это то, что адрес переменной нигде не используется.
Цитата Сообщение от Хрисипп Посмотреть сообщение
получается это очередное ограничение программиста от бесполезных возможностей?
просто физически невозможно получить адрес регистра, т.к. регистр - это принципиально другая вещь, у регистра есть имя по которому можно обратиться к переменной, но ты не можешь знать (если ручками не задашь) имя нужного регистра.

Цитата Сообщение от Programmist5 Посмотреть сообщение
Так это ассемблер батенька.
в gcc можно через сишный код дотянуться, но это нестандартное расширение.
0
Заблокирован
16.05.2016, 19:02
Можно еще просто asm{} написать и там уже пихать переменные в регистры.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
17.05.2016, 11:45
Наверное имелось ввиду что-то типа такого:
C++
1
2
3
4
5
6
7
#include <stdio.h>
 
int main(){
    register int n = 5;
    int* p = &n;
    printf("%x", (int)p);
}
Assembler
1
2
3
4
5
6
7
8
9
    subl    $20, %esp
    movl    $5, -16(%ebp)
    leal    -16(%ebp), %eax
    movl    %eax, -12(%ebp)
    movl    -12(%ebp), %eax
    subl    $8, %esp
    pushl   %eax
    pushl   $.LC0
    call    printf
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
17.05.2016, 12:29
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Наверное имелось ввиду что-то типа такого:
по ассемблерному коду видно, что несмотря на ключевое слово register переменная легла на стек, т.к. используется ее адрес.
0
 Аватар для Alamant
13 / 13 / 9
Регистрация: 16.05.2016
Сообщений: 49
17.05.2016, 12:54
если оператор взятия адреса (&) используется для объекта, компилятор должен поместить объект в расположение, для которого можно представить адрес. На практике это означает использование памяти, а не регистра
источник
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.05.2016, 12:54
Помогаю со студенческими работами здесь

Почему у xvalue нельзя взять адрес
Почему у xvalue нельзя взять адрес, если glvalue это выражение, оценка которого вычисляет местоположение объекта, битового поля или функции?

Как не указывать в правилах конкретный адрес, а взять из переменной окружения?
Такой код с конкретным адресом test1.ru работает (показывает мою картинку на моём сайте): RewriteEngine On RewriteCond...

Почему компилятор выводит весь массив, а не адрес начального элемента?
char array { &quot;hello&quot; } cout &lt;&lt; &amp; array почему компилятор выводит весь массив, а не АДРЕС начального элемента ?

Вычислить адрес верхушки стека, адрес следующей команды, адрес переменной, адрес которой содержится в BX
Помогите решить следующие задачи: 1.Вычислить адрес верхушки стэка. 2.Вычислить адрес следующей выполняемой программы. 3. Вычислить...

Компилятор выдает три ошибки, при попытке скомпилировать программу
Добрый день. Мне по заданию нужно решить эту формулу: l=min(x+y,y-z)/max(x,y). Я написал код программы на C++, но компилятор выдает 3...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru