Size: a a a

Ассемблер

2020 May 13

G

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

G

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

AG

Alexander Galileev in Ассемблер
Gymmasssorla
Конкретно это определение - не про типы, это про то, как мы их используем. С точки зрения компилятора, это доп. информация о нашем коде для проверки его на правильность, с точки зрения программиста - высокоуровневое описание нашей программы. Но это всё определения неформальные скорее
Как раз-таки это единственное осмысленное определение категории программирования "тип данных". "Тип данных" существует только в рамках компиляторов и интерпретаторов, при этом для разных компиляторов один и тот же тип может отличаться размерностью, допустимыми операциями и проч. Тип данных - это всего лишь абстракция, которую мы искусственно вводим для удобства программирования. В ассемблере мы должны сами должны помнить, что хранится в ячейке памяти, удобнее переложить эту работу на программу, компилятор.

Регистры же - просто быстрая память. С тем же успехом регистров могло не быть, тогда каждое используемое значение пришлось бы брать из памяти, что сильно замедлило бы программы, но и только.

Регистры - категория аппаратного обеспечения, типы данных - категория программирования.
источник

G

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

Регистры же - просто быстрая память. С тем же успехом регистров могло не быть, тогда каждое используемое значение пришлось бы брать из памяти, что сильно замедлило бы программы, но и только.

Регистры - категория аппаратного обеспечения, типы данных - категория программирования.
> Регистры же - просто быстрая память.

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

G

Gymmasssorla in Ассемблер
Конкретнее, вообще следовало бы мне сначала дать док-во, что регистры - это типы. Множество значений и так понятно что для регистра, операции над регистром - это специфичные команды процессора, способные только с определёнными регистрами работать, таким образом у нас формируется тип
источник

AG

Alexander Galileev in Ассемблер
> Об этом я уже писал - вы смотрите на регистры как на железо

Я сделаю смелое предположение - мы смотрим на регистры, как на железо, потому что это железо. Область памяти. Место, где мы храним данные. Тип данных - абстракция из мира программирования.
источник

AG

Alexander Galileev in Ассемблер
Даже если принять, что тип данных - это множество значений, то совсем не факт, что обратное будет верно: не каждое множество значений будет типом данных.
источник

G

Gymmasssorla in Ассемблер
Alexander Galileev
> Об этом я уже писал - вы смотрите на регистры как на железо

Я сделаю смелое предположение - мы смотрим на регистры, как на железо, потому что это железо. Область памяти. Место, где мы храним данные. Тип данных - абстракция из мира программирования.
Не вижу проблем на регистры смотреть как на абстракции языка программирования
источник

G

Gymmasssorla in Ассемблер
Alexander Galileev
Даже если принять, что тип данных - это множество значений, то совсем не факт, что обратное будет верно: не каждое множество значений будет типом данных.
Никто этого не утверждал
источник

G

Gymmasssorla in Ассемблер
Вообще сложный довольно вопрос про каждое ли множество - тип данных, и отношения к дискуссии не имеет
источник

AG

Alexander Galileev in Ассемблер
> Не вижу проблем на регистры смотреть как на абстракции языка программирования

Знаешь, я не буду запрещать тебе смотреть на регистры как на абстракции программирования. Но я все же буду придерживаться несколько устаревшей концепции: если что-то выглядит, как аппаратное обеспечение, ведёт себя, как аппаратное обеспечение, то, скорее всего, это - аппаратное обеспечение.

Напомнило мне вчерашнюю дискуссию о функциях и процедурах. "Мне кажется, что <вставить любую идею>". Если кажется - креститься надо, воть )
источник

楽園松本 in Ассемблер
Gymmasssorla
Вообще сложный довольно вопрос про каждое ли множество - тип данных, и отношения к дискуссии не имеет
Тип данных это наше отношение к данным. Для железа это набор битов.
источник

A

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

G

Gymmasssorla in Ассемблер
Aleksandr
ну что же, жду посмотреть как ты сделаешь int x = "fuck";
Легко
источник

G

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

A

Aleksandr in Ассемблер
Э, нет. Это уже будет неявное приведение строки к массиву байт
источник

G

Gymmasssorla in Ассемблер
Aleksandr
Э, нет. Это уже будет неявное приведение строки к массиву байт
Это будет побайтовое копирование
источник

A

Aleksandr in Ассемблер
О чем и речь, что уже далеко не строка
источник

G

Gymmasssorla in Ассемблер
Aleksandr
О чем и речь, что уже далеко не строка
Тип дискриминанта к double - та же ситуация
источник

G

Gymmasssorla in Ассемблер
Могу скопировать побайтово, как это в Си и делают, но могу свой тип определить
источник