Size: a a a

Ассемблер

2020 May 13

G

Gymmasssorla in Ассемблер
Aleksandr
Можешь, но дискриминани это не тип данных
1) Дискриминант можно и типом сделать
2) Значит и в регистре могу с оговоркой на её размер
источник

A

Aleksandr in Ассемблер
можешь
источник

A

Aleksandr in Ассемблер
А можешь ты к этой строке прибавить число?
источник

G

Gymmasssorla in Ассемблер
Могу все операции сделать с регистром, который предоставляет процессор. Значит могу
источник

A

Aleksandr in Ассемблер
И когда ты добавить к строке "1234" в регистре EAX число 6678h, ты получишь ошибку, или число сконвертируется?
источник

G

Gymmasssorla in Ассемблер
Второе
источник

A

Aleksandr in Ассемблер
нет
источник

G

Gymmasssorla in Ассемблер
Процессор просто будет работать с регистром как с битами
источник

G

Gymmasssorla in Ассемблер
Ну каким он и является, собственно, базово
источник

A

Aleksandr in Ассемблер
интересное описание происходящего
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
халивар 🥳
источник

A

Aleksandr in Ассемблер
и к какому типу типизации это относится?
источник

G

Gymmasssorla in Ассемблер
Он мне не сгенерирует ошибку "Эй, у тебя строка в регистре!"
источник

G

Gymmasssorla in Ассемблер
Он этого не может знать)
источник

A

Aleksandr in Ассемблер
именно. значит, типов нет
источник

G

Gymmasssorla in Ассемблер
Aleksandr
именно. значит, типов нет
Ещё повторюсь: тип - это множество значений и операций над ними. Всё, что удовлетворяет этому требованию - тип данных, отсюда и можно заключить, что регистры - тоже типы данных с точки зрения ассемблерного языка. Заключение "именно. значит, типов нет" наводит нас нас невозможность полностью описать контракт, поведение нашей программы в типах, что, конечно, никак не соперничает с определением типов. Практически во всех языках программирования нельзя описать поведение программы в типах.
источник

G

Gymmasssorla in Ассемблер
[Разговор про Си]
- А в int  ты можешь строку положить?
- Могу.
- А если прибавить 1 к int, в котором строка?
- То прибавиться 1 без ошибки.
- Именно, значит типов нет.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Заключение "именно. значит, типов нет" наводит нас нас невозможность полностью описать контракт, поведение нашей программы в типах, что, конечно, никак не соперничает с определением типов.

поведение работы с данными задаёт сам программист. если он считает что это целое без знака - он использует соответствующие операции, если он считает что это вещественное - другие операции. и даже тот же флоат может быть целым без всяких преобразования, потому что прогер видит набор байтов, и тоже вещественное число он может записать в виде ascii символом и сказать "это вещественное число" и применить операции характерные для вещественных.
источник

G

Gymmasssorla in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
Заключение "именно. значит, типов нет" наводит нас нас невозможность полностью описать контракт, поведение нашей программы в типах, что, конечно, никак не соперничает с определением типов.

поведение работы с данными задаёт сам программист. если он считает что это целое без знака - он использует соответствующие операции, если он считает что это вещественное - другие операции. и даже тот же флоат может быть целым без всяких преобразования, потому что прогер видит набор байтов, и тоже вещественное число он может записать в виде ascii символом и сказать "это вещественное число" и применить операции характерные для вещественных.
Может и создать свой тип данных со своим контрактом (политикой) и не утруждать себя низкоуровневыми деталями. В общем, это не совсем про определение типа данных
источник

AG

Alexander Galileev in Ассемблер
Типы данных - это понятие из уровня компиляторов/интерпретаторов. Указывая тип переменной, мы говорим компилятору, что этой переменной делать можно, а что нет. При попытке выполнить запрещённую операцию компилятор выдаст предупреждение "погодь, так делать нельзя". В ассемблере мы работаем на уровне непосредственных значений, битов/байтов. Ассемблер (программа) не выдаст никакого предупреждения, если мы попытаемся сделать что-то "недозволенное" -  его точки зрения недозволенных операций с "типами" нет, он вообще не понимает, что это.
источник