Войти
ФлеймФорумПрограммирование

Общие вопросы по программированию (337 стр)

Страницы: 1336 337 338 339347 Следующая »
#5040
20:08, 19 окт. 2021

=A=L=X=
> А когда инструкции всегда одинаковой длины или почти всегда - это характерная
> черта концепции RISC и это действительно заставляет иметь отдельный набор
> команд для загрузки и сохранения в память и отдельно операции с регистрами.

попробуй пописать асм код на RISC


#5041
(Правка: 20:18) 20:15, 19 окт. 2021

innuendo
> попробуй пописать асм код на RISC

Мне просто незачем это делать. Я и на x86 на асме давно не пишу ибо тоже после первых экспериментов стало незачем. В большинстве случаев разглядываю код который генерирует gcc/clang да разглядываю таблицы с как раз форматами инструкций просто чтобы узнать что за ISA и чем характерна. Во последнее действительно люблю делать.

#5042
(Правка: 20:33) 20:30, 19 окт. 2021

Причина то в load/store простая - т.к. инструкции как правило длины 32 бита, то чтобы загрузить данное из памяти адрес должен влезть в эти 32 бита вместе с кодом инструкции о том что это load/store и какого регистра. В итоге адрес стал ну где то 20 бит или около того, что недостаточно чтобы адресовать всю память. В результате чаще всего делать так, что адрес это смещение от PC (счётчика инструкций) ну вот порядка мегабайта плюс-минус и поэтому в ассемблерном коде стали делать нетипично для x86 - располагать данные где то в текущем юните компиляции и сшивать их не в один сегмент, а во много маленьких разбросанных где то в пределах одного мегабайта от собственно кода который с ним работает. Ну вот такие проблемы, но зато сразу position-independed-code стал легко реализовываться потому что и переходов абсолютно та же проблема.
Сперва мне это казалось диким недостатком по сравнению с x86, но подумав-подумав согласился что жить можно. Правда в плохом случае когда нужно залезть в чужую DLL начинаются уже свистопляски, но сейчас плохо помню как решаются в том же gcc. Какие то манипуляции через вариант load/store где адрес хранится в регистре вроде. Но что меня улыбнуло - это то, что когда x86 перешёл на 64 бита они как раз ввели режим адресации данных относительно PC (call относительно PC был всегда). Опять же потому что на x86 отсутствие такого режима адресации создавало аналогичные проблемы. Забавно всё это и действительно принципы сближаются, тот же ARM совсем вразнос пошёл с Thumb/Thumb2 и всякими Jazazele насочиняв просто тонну форматов инструкций еще и переменной длины иногда которые иногда процессоры поддерживали сразу пачками. Т.е. боролись за простой декодер изначально, но потом плотность инструкций стала приятнее.

#5043
8:47, 25 окт. 2021

Беру я тут значится d3d10.h пропускаю его через мясорубку gcc:

gcc d3d10.h -E > out_d3d10.h
В выходном файле получаю очищенный от мусора код, но вперемешку с директивами вроде:
# 1 "d3d10.h"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "d3d10.h"
# 21 "d3d10.h"
# 575 "d3d10.h"
При том, что в исходном файле этих директив нет, как от них избавиться?

#5044
8:57, 25 окт. 2021

nes
> как от них избавиться
Regexp'ом пройдись по файлу.

> Беру я тут значится d3d10.h пропускаю его через мясорубку gcc:
А нафига тебе это вообще понадобилось?

#5045
9:27, 25 окт. 2021

Vlad2001_MFS
>А нафига тебе это вообще понадобилось?
Мне нужен d3d10 в Visual Studio 2008.

#5046
9:33, 25 окт. 2021

nes
> Мне нужен d3d10 в Visual Studio 2008.

У студии тоже был ключ выплёвывающий только результат препроцессора. Не помню какой, но точно был.

#5047
13:02, 25 окт. 2021

Vlad2001_MFS
> > Беру я тут значится d3d10.h пропускаю его через мясорубку gcc:
> А нафига тебе это вообще понадобилось?

точно

#5048
13:08, 25 окт. 2021

innuendo
Изображение

#5049
20:05, 25 окт. 2021

nes
такое очучение шо ты занимаешься ерундой

#5050
20:08, 25 окт. 2021

innuendo
Тебе не нравится d3d10 или visual studio 2008?

#5051
22:52, 25 окт. 2021

innuendo
> такое очучение шо ты занимаешься ерундой
У меня такое ощущение уже давненько))

И по поводу себя тоже :D

nes
> Тебе не нравится d3d10 или visual studio 2008?
Мне не нравится VS 2008 и необходимость такого сочетания интересного, например.

#5052
8:15, 26 окт. 2021

Vlad2001_MFS
На любителя.

#5053
20:15, 27 окт. 2021

Ocerednyje KRESTOPROBLEMY:

error: function cannot return array type 'int [2]'
Dokole?

Какого хрена в 2021-м году я не могу возвращать из функции массив?

#5054
20:28, 27 окт. 2021

Panzerschrek[CN]
> Какого хрена в 2021-м году я не могу возвращать из функции массив?

Скорее всего из-за того правила, что массив автоматически и без варнингов кастится в указатель на первый элемент массива.
С таким правилом и возвратом массивов из функций словить недиагностируемый UB легче лёгкого.

Страницы: 1336 337 338 339347 Следующая »
ФлеймФорумПрограммирование