|
Хранение данных внутри блока кода
|
|||
---|---|---|---|
#18+
Когда-то давным давно.... баловался я ASM. Там можно было сделать примерно такую штуку (немного синтаксис забылся, но суть должна быть понятна): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Делалось такое, чтобы не создавать глобальные переменные для единожды используемых констант (обычно текстовых). Если я правильно понимаю, нижеследующий код создает локальные переменные (на стеке ?) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
а можно как-нибудь реализовать хранение этих "переменных" вот прям в блоке кода перед вызовом функции? об атрибутах страниц памяти я осведомлен. Готов к выслушиванию осуждений, возмущений, недоумений и тому подобного, но лучше по существу ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2020, 18:26 |
|
Хранение данных внутри блока кода
|
|||
---|---|---|---|
#18+
1. Смысла заморачиваться где хранится, лично я не вижу. 2. Хранить можно, однозначно. 3. Константы все таки static и никакие "локальные переменные" для них не нужны. А в примере Вашего кода даже и НЕ константы (нет const) но лучше по существу Сам не делал, но IMHO: 1. Сегмент данных или сегмент кода определяется при линковке. Т.ч. можно смотреть в опции компилятора/линковшика, каким образом правильно обозвать сегменты, что бы они линковались в сегмент кода 2. Есть __asm и прочее. Т.ч. забить данные в HEX виде в теле программы думаю вполне реально ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2020, 18:38 |
|
Хранение данных внутри блока кода
|
|||
---|---|---|---|
#18+
IlyamIа можно как-нибудь реализовать хранение этих "переменных" вот прям в блоке кода перед вызовом функции? Код: sql 1. 2.
static по вкусу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2020, 18:44 |
|
Хранение данных внутри блока кода
|
|||
---|---|---|---|
#18+
IlyamI Если я правильно понимаю, нижеследующий код создает локальные переменные (на стеке ?) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
Сами строки (байты) скорее всего хранятся в статической области памяти — по сути не именованная глобальная переменная. При заходе в эту функцию, да, создаются локальные переменные на стеке — не константные массивы. И в них копируются данные из статической области памяти. Далее ты эти массивы можешь менять. Потом указатели на эти массивы передаются в функцию `MessageBoxA()`. Но если ты эти массивы (на стеке) не меняешь, то оптимизатор наверное может передать в MessageBoxA() указатели на статическую область памяти. Т.е. не будет никаких локальных массивов и копирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.07.2020, 20:37 |
|
|
start [/forum/topic.php?fid=57&tid=2017378]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 263ms |
total: | 396ms |
0 / 0 |