Size: a a a

Ассемблер

2021 September 06

Y

Yura in Ассемблер
А в чем сыр бор , у адепта асемблера порвало жопу и он поливает говном сишку ?
источник

E

Entusiast in Ассемблер
Мут бы тебе за такой слэнг. Ещё на денёк
источник

ДЦ

Дмитро Цимбалюк... in Ассемблер
такое осуждаем
источник

s

s54816 in Ассемблер
Нет, он притащил какую-то рандомную цитату из википедии, я на неё ответил, и так как нам обоим было нечем заняться, мы скатились в терминологию.
источник

ДЦ

Дмитро Цимбалюк... in Ассемблер
ну заняться нечем
источник

E

Entusiast in Ассемблер
Прикол, когда ты не просто притащил что-то, а просто ВЫДУМАЛ))
Я ради тебя содрал понятие со всех поисковиков, и со всех сайтов!! Понятие противоречит тебе (твоей выдумке)!
источник

Y

Yura in Ассемблер
Потятно
источник

ДЦ

Дмитро Цимбалюк... in Ассемблер
скорее наоборот
"смотрите, какая там есть арифметика указателей"
источник

d

disba1ancer in Ассемблер
Так это описание частного случая
источник

Y

Yura in Ассемблер
Не ,почти всегда было
источник

ДЦ

Дмитро Цимбалюк... in Ассемблер
по делу 2 деда сцепились по пьяни
источник

ST

Saenro T in Ассемблер
Так кроме этого ещё много чего притащили с ЯВУ.
источник

E

Entusiast in Ассемблер
Ну, а теперь насчёт этого.

Согласно термину указателя из 1955 - из адресного языка программирования:
Указатель — переменная, диапазон значений которой состоит из адресов ячеек памяти или специального значения — нулевого адреса. Последнее используется для указания того, что в данный момент указатель не ссылается ни на одну из допустимых ячеек.

А теперь - магия!
ptr dd 0
= указатель, указывающий на нулевой адрес
ptr dd str = указатель, указывающий на адрес str

"Указатель — адрес ячейки памяти."
https://assembler-code.com/ukazatel-v-programmirovanii/ (MS-DOS, TASM - работа с указателями)

"Как устроены указатели на уровне ассемблера"
https://ru.stackoverflow.com/questions/970273/%d0%9a%d0%b0%d0%ba-%d1%83%d1%81%d1%82%d1%80%d0%be%d0%b5%d0%bd%d1%8b-%d1%83%d0%ba%d0%b0%d0%b7%d0%b0%d1%82%d0%b5%d0%bb%d0%b8-%d0%bd%d0%b0-%d1%83%d1%80%d0%be%d0%b2%d0%bd%d0%b5-%d0%b0%d1%81%d1%81%d0%b5%d0%bc%d0%b1%d0%bb%d0%b5%d1%80%d0%b0#970306

foo(int*):  ; В rdi 
указатель
 на 32 битную переменную.
 mov eax, DWORD PTR [rdi] ; Помещаем в eax значение, находящееся по адресу (указателю) rdi
 sal eax                  ; сдвиг eax влево на 1 бит ( eax*=2 )
 mov DWORD PTR [rdi], eax ; Помещаем eax обратно по адресу из rdi
 ret
источник

ST

Saenro T in Ассемблер
Адрес... Адрес...
источник

E

Entusiast in Ассемблер
Ну... да
А в ЯВУ по-другому, или там, где "есть указатель", по мнению s54816?
Я так полагаю, там будет огромнейший код, который будет мне противоречить (ну, то есть, как с ООП, или другими вещами, про которые точно можно сказать - их нет в ассемблере, их нужно писать самому, реализовывать, это часть ЯВУ)?
Не думаю. Там будет просто ptr dd str.
источник

ДЦ

Дмитро Цимбалюк... in Ассемблер
я же ничего не путаю, в асме можно в любую "переменную" записать как значение, так и адрес(вольно интерпретировать числа)? Тем временем, в языках высокого уровня это четко разделено
источник

E

Entusiast in Ассемблер
int addr = 0x400000;
char[] str = "Test";
int* ptr = &str;

str db 'Test', 0
ptr dd str

mov eax, str ; EAX = указатель на str
источник

s

s54816 in Ассемблер
Вот так мы и узнали, откуда этот хейт. Entusiast просто не знает Си.
источник

E

Entusiast in Ассемблер
Какой ещё хейт? И что я где неправильно написал?
источник

II

Ira Irina in Ассемблер
Блин, си указатель это тип данных.  Помимо  значения которое в нем записано, компилятор  связывает с этим типом кучу всякой инфы. В том числе и определения для него арифметических операций. В асме указатель - это только значение.
источник