Модификация операндов машинной команды при линковке

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Модификация операндов машинной команды при линковке

Сообщение scorpi_0n »

ptr128 писал(а):Может я туплю, но длительные размышления и гугл пока не помогли. А суть проблемы в следующем.
Пусть у нас есть код. Не важно для какого МК. Важно то, что подавлющее большинство МК не позволяют использовать номер бита или номер порта в команде из регистра. Извольте непосредственно указать номер бита 0..7. Или извольте непосредственно указать номер порта 0..1F (для примера).
Или каша в голове, или отсутствие знаний. Младшие ПИКи могут менять любой бит любого порта, регистра или ячейки памяти одной командой, потому что они не load/store. На архитектуре load/store естественно такое не прокатывает.
Тема ST7735 уже настолько прогрызана, что вам там просто делать нечего, от слова совсем. А вы ещё и какие-то там либы надумали, какую-то смену ног, какую-то там ардуину.
Непрерывная передача по SPI на полной возможной для дисплея скорости возможна только на МК с хардварной реализацией SPI 9 бит, СТМ32Ф0 например, или на МК с 16 бит SPI и развитыми командами сдвига для реализации перекодировки на лету. Это типа ПИК24,30,33,32 и СТМ32Ф1хх и им подобные. Есть ещё вариант через ЮАРТ, но там тоже не айс. Для одних случаев нужно байт переворачивать, что выливается в две команды для СТМ32Ф1хх, но никак не для АВР, для других - скорость ЮАРТ как правило низковата.
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Модификация операндов машинной команды при линковке

Сообщение BOB51 »

scorpi_0n писал(а):...
Или каша в голове, или отсутствие знаний. Младшие ПИКи могут менять любой бит любого порта, регистра или ячейки памяти одной командой, потому что они не load/store. На архитектуре load/store естественно такое не прокатывает.
...
В принципе может...
при абсолютном адресе порта и абсолютном номере бита
bsf port,bit/bcf port,bit
так же как и у АВР при соответствующем применении команд вида
sbi port,bit/cbi port,bit
Однако...
речь идет о применении относительной адресации - указания произвольного адреса порта и произвольного адреса бита
(библиотечный модуль с подстановкой параметров "по настроению")
и выигрыш при том весьма спорный - что для АВР, что для "среднемладших" прийдется использовать команды косвенной адресации и "вспомогательные регистры" указателей адреса порта и номера бита.
8)
воть тут то и "гвоздик"...
ежли для АВР при дополнительном расходе трех регистров РОН это выглядит как уже вышеприведенное:
ld some_reg, X ; 2
or some_reg, some_mask ; 1
st X, some_reg ; 2
то у ПИКа...
ладушки... с косвенным адресом порта еще с горем пополам конструкция
bcf INDF,bit/bsf INDF,bit
разобраться может - НО... отдельно для каждого из бит порта и при "потере" единственного регистра косвенной адресации (у АВР таковых аж три - одним меньше...).
А вот как быть с произвольным номером бита порта?
Ведь также без помощи дополнительной маски и режима "чтение-модификация-запись" обойтись не получится.
К тому же еще стоит добавить кардинальное различие в организации самого обмена с портами ввода-вывода у АВР и "среднемладших" - простой установкой вывода маской без дополнительной трахотни в случае многоцелевого применения порта не обойтись...
8)
О 24-х ПИКах "и выше" - разговор отдельный знаю, что оные "понавороченей" - но изучением оных конкретно не занимался.
:roll:
Реклама
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Модификация операндов машинной команды при линковке

Сообщение scorpi_0n »

Да как не крути, а этот хоровод вокруг ардуиновского навоза гроша ломанного не стоит. Тут всё просто как два пальца - либо сектантская универсальность, с расплатой за всё по полной, либо нормальный код на нормальном МК и с нормальным результатом.
За всё приходится платить, даже если очень не хочется.
Освоили дети "бит" и "байт"? СТМ32 им в зубы! Зубы крепкие, мозги чистые, пусть не тратят время на всякий шлак.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Модификация операндов машинной команды при линковке

Сообщение BOB51 »

Это "хоровод вокруг алгоритма" для конкретного семейства МК.
На тему
"есть вот такое решение"
можно ли сделать лучше?
А на дуине или еще на чем - БЕЗ РАЗНИЦЫ.
Выяснилось, что на данный момент возможности исчерпаны - и на том спасибки - значит надо чегось иного использовать.
:)
Универсальность - также штука сложная.
Та же "рассыпуха" - как скоммутировал - такая схемка и получится.
Да и про "более сложные устройства" включая те же простые МК... :roll:
Можно сложность на одном кристалле наворачивать, а можно несколько штук "попроще" в изделие поставить. Причем пользователю того устройства абсолютно доG... какая там начинка - главное удобство и надежность/функционал/цена для того, кто с/на оном устройстве работать/играть будет. Да еще "сикоко стоить ремонт будеть?" (или лучше новенькое купить :wink: ).
8)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Модификация операндов машинной команды при линковке

Сообщение scorpi_0n »

Заюзать несколько СТМ8С003 вместо одного СТМ32Ф0хх ещё как то понять можно. Но применение 4-10 ардуин вместо одного СТМ32Ф0хх уже сильно попахивает маразмом, что по физическим размерам и весу, что по затратам и ценам (про надёжность можно вообще не упоминать), что по психологическому состоянию заказчика.
Даже в данном случае, как несколько ардуин увеличат скорость вывода информации на экран ТФТ? Да никак!
Реклама
Аватара пользователя
ptr128
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Re: Модификация операндов машинной команды при линковке

Сообщение ptr128 »

scorpi_0n писал(а):
ptr128 писал(а):Может я туплю, но длительные размышления и гугл пока не помогли. А суть проблемы в следующем.
Пусть у нас есть код. Не важно для какого МК. Важно то, что подавлющее большинство МК не позволяют использовать номер бита или номер порта в команде из регистра. Извольте непосредственно указать номер бита 0..7. Или извольте непосредственно указать номер порта 0..1F (для примера).
Или каша в голове, или отсутствие знаний. Младшие ПИКи могут менять любой бит любого порта, регистра или ячейки памяти одной командой, потому что они не load/store.
У Вас в явном виде и то и другое. Ни один из PIC не позволяет указать номер бита в регистре или ячейчке памяти. Только как непосредственный операнд команды. Не позорились бы публично, что ли )
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Реклама
BorisSPB
Встал на лапы
Сообщения: 145
Зарегистрирован: Ср фев 01, 2012 10:55:53

Re: Модификация операндов машинной команды при линковке

Сообщение BorisSPB »

ptr128 писал(а):Ни один из PIC не позволяет указать номер бита в регистре или ячейке памяти.
Не срача ради, но для истины, а это что:
Изображение
Вложения
pic16opcode.PNG
(22.11 КБ) 696 скачиваний
Аватара пользователя
ptr128
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Re: Модификация операндов машинной команды при линковке

Сообщение ptr128 »

BorisSPB писал(а):
ptr128 писал(а):Ни один из PIC не позволяет указать номер бита в регистре или ячейке памяти.
Не срача ради, но для истины, а это что:
Изображение
Подтверждение моих слов. Номер бита, над которым производится операция, указан непосредственно в коде команды в битах 7-9 и изменить его после загрузки прошивки уже не возможно.

Точнее, возможно на фон Неймановской архитектуре. Но здесь вопрос осуждается именно по Гарвардской.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Модификация операндов машинной команды при линковке

Сообщение scorpi_0n »

ptr128 писал(а): У Вас в явном виде и то и другое. Ни один из PIC не позволяет указать номер бита в регистре или ячейчке памяти. Только как непосредственный операнд команды. Не позорились бы публично, что ли )
Да вы ещё и читать не умеете? Читайте и краснейте!
Младшие ПИКи могут менять любой бит любого порта, регистра или ячейки памяти одной командой, потому что они не load/store
Перевести? Перевожу. Одной командой можно, потому что, дословно, "позволяют использовать номер бита или номер порта в команде из регистра.". При load/store же никак не может быть одной командой, сначала load, потом store.

Да и какая разница, по большому счёту, вам всё равно это никак не поможет. Даже при переупаковке на лету и счёте тактов вручную вам не хватит 16 отведённых на это тактов по времени. При 16 бит SPI может и хватило бы, но у Меги нет 16 бит SPI режима. Переупаковывать в буфер, а потом выплёвывать, ну не знаю, может для вас это ещё хуже будет.

Можете своим детям показать этот ярчайший пример, как пример упирания задачи в изначально неправильно выбранную архитектуру.
Аватара пользователя
ptr128
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Re: Модификация операндов машинной команды при линковке

Сообщение ptr128 »

scorpi_0n писал(а):
ptr128 писал(а): У Вас в явном виде и то и другое. Ни один из PIC не позволяет указать номер бита в регистре или ячейчке памяти. Только как непосредственный операнд команды. Не позорились бы публично, что ли )
Одной командой можно, потому что, дословно, "позволяют использовать номер бита или номер порта в команде из регистра.".
Пруф?
PIC10 и PIC12 команды 0x400 по 0x7FF - номер бита в коде команды в битах 5, 6 и 7
PIC12 и PIC16 команды 0x2000 по 02FFF - номер бита в коде команды в битах 7, 8 и 9 (картинку даже приводили выше)
PIC18 команды 0x8000 по 0xBFFF - номер бита в коде комадны в битах 9, 10 и 11
Так про какой PIC все же речь?
Даже при переупаковке на лету и счёте тактов вручную вам не хватит 16 отведённых на это тактов по времени.
Так хватило же и работает. И видео и код выше. Или Вам еще в доказательство скрин с логического анализатора необходим? )))
Но при фиксированном при компиляции пине для D/C. Сменить пин (порт и бит порта) без перекомпиляции невозможно. Вот об этом как раз весь топик.

Ого! scorpi_0n я то Вам карму понизил за оскорбительный тон и переход на личности при обсуждении технических проблем. А на каком основании, кроме личной неприязни, Вы понизили ее мне?
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Модификация операндов машинной команды при линковке

Сообщение scorpi_0n »

ptr128 писал(а): Так про какой PIC все же речь?
Про любой из них! И одной командой! BOB51 Даже кусочек кода выложил. Или вы только себя читаете?
Но при фиксированном при компиляции пине для D/C. Сменить пин (порт и бит порта) без перекомпиляции невозможно. Вот об этом как раз весь топик.
Потому что это и даром никому не нужно.
Аватара пользователя
ptr128
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Re: Модификация операндов машинной команды при линковке

Сообщение ptr128 »

scorpi_0n писал(а):
ptr128 писал(а): Так про какой PIC все же речь?
Про любой из них! И одной командой! BOB51 Даже кусочек кода выложил. Или вы только себя читаете?
Да выложил. Два варианта. Или через Load/Store или с фиксированным номером бита в коде команды. Но вы же утверждаете:
scorpi_0n писал(а): Одной командой можно, потому что, дословно, "позволяют использовать номер бита или номер порта в команде из регистра.".
Так где пруф?
scorpi_0n писал(а): Потому что это и даром никому не нужно.
"Отучаемся говорить за всех" (с)
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Модификация операндов машинной команды при линковке

Сообщение scorpi_0n »

ptr128 писал(а): Подтверждение моих слов. Номер бита, над которым производится операция, указан непосредственно в коде команды в битах 7-9 и изменить его после загрузки прошивки уже не возможно.

Точнее, возможно на фон Неймановской архитектуре. Но здесь вопрос осуждается именно по Гарвардской.
Одни СТМ32 Гарвардской, другие - Неймановской архитектуры. И те и другие load/store.
Получается что вы вообще ничего не знаете, кроме как срать в карму и как спорить на ровном месте. Респект вам!
Аватара пользователя
ptr128
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Re: Модификация операндов машинной команды при линковке

Сообщение ptr128 »

scorpi_0n писал(а): Одни СТМ32 Гарвардской, другие - Неймановской архитектуры. И те и другие load/store.
При чем тут это? Демагогия? Пруф давайте, подтверждающий ваши слова:
scorpi_0n писал(а): Одной командой можно, потому что, дословно, "позволяют использовать номер бита или номер порта в команде из регистра.".
scorpi_0n писал(а): Получается что вы вообще ничего не знаете, кроме как срать в карму и как спорить на ровном месте. Респект вам!
Детка, будешь вежлив и не будешь переходить на личности - будет положительная карма. Когда подрастешь и культуре научишься)
Ты и вправду думал, что можно человеку, которого впервые видешь, вот так просто сказать:
scorpi_0n писал(а): Или каша в голове, или отсутствие знаний.
не ухудшив себе карму?

А спорить это ты сюда пришел. Причем утверждая, что:
scorpi_0n писал(а): это и даром никому не нужно
Если тебе это не нужно, то зачем ты вообще в эту тему зашел и, тем более, зачем что-то сюда писать стал? )))
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Модификация операндов машинной команды при линковке

Сообщение scorpi_0n »

Я уже устал от твоих истерик и незнаний. Тебе показали что это возможно для порта. Если для тебя твоё же "или" (которое персонально для тебя было выделено жирным) через пять минут обозначает как обязательное для всех "и", то это только твои проблемы. Просто не надо тогда говорить что "нигде и никак", если ты просто этого не знаешь.
И "это и даром никому не нужно" - это действительно никому не нужно. Это не РС, "детка"(а ты просто хам, однако), это МК! Где всё может быть совсем по разному! И если не знаешь в чём отличие МК от РС и что для чего предназначено, то это тоже только твои проблемы. Но все твои попытки РС-подходов к программированию на МК, в большинстве случаев, будут обречены на провал. Что ты и получил, в общем. Так что нечего искать виновных на стороне, разберись сначала в себе.
Аватара пользователя
ptr128
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Re: Модификация операндов машинной команды при линковке

Сообщение ptr128 »

scorpi_0n писал(а):Я уже устал от твоих истерик и незнаний.
Не утомился? С тебя жду ответов на два простых вопроса:


1. Пруф давайте, подтверждающий ваши слова:
scorpi_0n писал(а): Одной командой можно, потому что, дословно, "позволяют использовать номер бита или номер порта в команде из регистра.".

2. scorpi_0n я то Вам карму понизил за оскорбительный тон и переход на личности при обсуждении технических проблем. А на каком основании, кроме личной неприязни, Вы понизили ее мне?

На любые остальные твои излияния буду отвечать только после ответа на эти два вопроса и принесения тобой публичных извининий.

Ах, да. Ответ на второй вопрос можно в личке. Чтобы не засорять форум.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Модификация операндов машинной команды при линковке

Сообщение scorpi_0n »

А мне с тобой больше говорить не о чем! Как говорят "Не в коня корм."(с). И твои детские истерики я лечить не собираюсь, с этим к доктору.

Для остальных, кто в теме, а не в обиде на свою жизнь и свои незнания.
Смотрим.
Может я туплю
Однозначно и без вариантов!
но длительные размышления и гугл пока не помогли.
Если нет знаний, что тогда он искал и о чём думал?
А суть проблемы в следующем.
Пусть у нас есть код. Не важно для какого МК. Важно то, что подавлющее большинство МК не позволяют использовать номер бита или номер порта в команде из регистра. Извольте непосредственно указать номер бита 0..7. Или извольте непосредственно указать номер порта 0..1F (для примера).
Иными словами, если на момент написания кода, номер бита или номер порта не известен, то вместо одной машинной команды "установить бит X в порту Y" нам нужно запрещать прерывания, читать весь порт в регистр, устанавливать в нем бит, записывать весь порт обратно и разрешать прерывания. Уродство (
Смотрим и удивляемся! МК СТМ32.

Код: Выделить всё

   119: GPIOA->BSRR = GPIO_BSRR_BS5; 
   120:      
0x080002F6 2120      MOVS     r1,#0x20
0x080002F8 4A23      LDR      r2,[pc,#140]  ; @0x08000388
0x080002FA 6011      STR      r1,[r2,#0x00]
   121: GPIOB->BSRR = GPIO_BSRR_BS6;  
   122:  
0x080002FC F8DFC08C  LDR.W    r12,[pc,#140]  ; @0x0800038C
0x08000300 2340      MOVS     r3,#0x40
0x08000302 F8CC3000  STR      r3,[r12,#0x00]
   123: GPIOA->BSRR = GPIO_BSRR_BS5; 
   124:  
0x08000306 6011      STR      r1,[r2,#0x00]
   125:  __NOP(); 
   126:   
0x08000308 BF00      NOP         
Как видим, загружаются в регистры и адрес порта, и номер бита, хотя нас уверяли в обратном. Для GPIOA это r2, для номера бита это r1. После этого командой STR определённый бит устанавливается в порту. Причём, при повторной установке бита порта всё вырождается в одну команду. И никаких запретов прерываний, никакого чтения порта нет, все манипуляции с GPIO_BSRR атомарны по сути своей. Мало того, операции с битами в GPIO_BSRR могут быть групповыми, как на сброс или установку, так и на сброс и установку одновременно.

Вот так от незнаний некоторых и рождаются всякие там сказки и легенды.
Аватара пользователя
ptr128
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Re: Модификация операндов машинной команды при линковке

Сообщение ptr128 »

scorpi_0n писал(а):А мне с тобой больше говорить не о чем! Как говорят "Не в коня корм."(с). И твои детские истерики я лечить не собираюсь, с этим к доктору.

Смотрим и удивляемся! МК СТМ32.
При чем тут STM32? Всем давно известно, что в ядре Cortex-M3 проблема атомарности сброса и установки битов решена аппаратным путем благодаря специальным регистрам BSRR и BRR.

Приведите сначала доказательство своему утверждению и не занимайтесь демагогией:
scorpi_0n писал(а): Младшие ПИКи могут менять любой бит любого порта, регистра или ячейки памяти одной командой
...
Одной командой можно, потому что, дословно, "позволяют использовать номер бита или номер порта в команде из регистра."
Ну и ответа на второй вопрос я не вижу ни здесь, ни в личке. Так же как и извинений.
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: Модификация операндов машинной команды при линковке

Сообщение scorpi_0n »

ptr128 писал(а): При чем тут STM32?
У вас прогрессирующий склероз? Мне вас просто жаль!
Это ваш пост, ваши слова?
ptr128 писал(а):Может я туплю, но длительные размышления и гугл пока не помогли. А суть проблемы в следующем.
Пусть у нас есть код. Не важно для какого МК. Важно то, что подавлющее большинство МК не позволяют использовать номер бита или номер порта в команде из регистра. Извольте непосредственно указать номер бита 0..7. Или извольте непосредственно указать номер порта 0..1F (для примера).
Иными словами, если на момент написания кода, номер бита или номер порта не известен, то вместо одной машинной команды "установить бит X в порту Y" нам нужно запрещать прерывания, читать весь порт в регистр, устанавливать в нем бит, записывать весь порт обратно и разрешать прерывания. Уродство (
И фраза
Пусть у нас есть код. Не важно для какого МК.
тоже ваша?
Или у вас "Не важно для какого МК" и "подавлющее большинство МК не позволяют использовать номер бита или номер порта в команде из регистра" это МК только от Атмэл?
С вами всё ясно! До свидания! ("Улыбаемся и машем руками!"(с).)
Аватара пользователя
ptr128
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Чт окт 06, 2016 21:12:07
Откуда: Южное Бутово

Re: Модификация операндов машинной команды при линковке

Сообщение ptr128 »

scorpi_0n писал(а):
ptr128 писал(а): При чем тут STM32?

Это ваш пост, ваши слова?
ptr128 писал(а):Может я туплю, но длительные размышления и гугл пока не помогли. А суть проблемы в следующем.
Пусть у нас есть код. Не важно для какого МК. Важно то, что подавлющее большинство МК не позволяют использовать номер бита или номер порта в команде из регистра. Извольте непосредственно указать номер бита 0..7. Или извольте непосредственно указать номер порта 0..1F (для примера).
Иными словами, если на момент написания кода, номер бита или номер порта не известен, то вместо одной машинной команды "установить бит X в порту Y" нам нужно запрещать прерывания, читать весь порт в регистр, устанавливать в нем бит, записывать весь порт обратно и разрешать прерывания. Уродство (
Или у вас "Не важно для какого МК" и "подавлющее большинство МК не позволяют использовать номер бита или номер порта в команде из регистра" это МК только от Атмэл?
С каких пор STM32 стал относиться к МК, которые не позволяют использовать номер бита или номер порта в команде из регистра?

Это в том числе и PIC, про которые ты утверждал:
scorpi_0n писал(а): Младшие ПИКи могут менять любой бит любого порта, регистра или ячейки памяти одной командой
...
Одной командой можно, потому что, дословно, "позволяют использовать номер бита или номер порта в команде из регистра."
Где подтверждение твоих слов?

Где ответ на второй вопрос?
Не ошибается только то, кто ничего не делает.
Тот, кто признает свои ошибки, на них учится.
Глупец же, упорствуя в своих заблуждениях, остается глупцом.
Ответить

Вернуться в «Разные вопросы по МК»