LINUX.ORG.RU

Обучение программированию

 , , ,


1

4

Привет, а есть желающие поучить меня программировать?=)

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

Уровень: хеллоуворлдщик.
Код1, Код2

Для тех кому лень качать линки на pastebin:
код1_pastebin, код2_pastebin

PS. Не троллинг. Проблема с кодировкой из-за того, что код писался в оффтопике.



Последнее исправление: ChuCha (всего исправлений: 3)
Ответ на: комментарий от unt1tled

По теме я тебе уже всё объяснил, но вместо того, чтобы что понять - ты показал только горящую жопу.

А так да, пытайся дальше, мб, если меня не будет, либо другого норм паца - сойдёшь за эксперта.

TrueTsar1C
()
Ответ на: комментарий от TrueTsar1C

я тебе уже всё объяснил

где? я перечитал тред и увидел только поливание грязью без объяснений — моя агрессия вполне понятна

upd: а во, заметил, ты не мне отвечал. ты прогнал какую-то херню, это раз. 2: я там писал про микроконтроллеры и RISK как наглядный пример того, где надо понимать, как работает ассемблер, а на быдлянском x86 об этом думать не поможет

unt1tled ★★★★
()
Последнее исправление: unt1tled (всего исправлений: 1)
Ответ на: комментарий от TrueTsar1C

маломощный мусор
гибкость
ненужные сущности
интегрированность
логичность
как учить - хз

Такое чувство, как будто ты нахватался каких-то вскукареков в языковых срачах и теперь просто употребляешь все эти базз-ворды. «Ну сишка эт карач она простая и мощная, эффеткивная и быстрая, без лишнего мусора, гибкая интергрированность, логичная гибкость и всё такое». Я обычно люблю всяких радикально-мыслящих людей, пусть они всех считают идиотами или сами заблуждаются, зато у них бывает уникальный взгляд на вещи, который может быть интересен сам по себе. Например Вербицкий с его планом. А ты просто мамкин бунтарь какой-то. Где твой радикальный взгляд на вещи, в чём он состоит?

grimwaken
()
Ответ на: комментарий от unt1tled

где? я перечитал тред и увидел только поливание грязью без объяснений — моя агрессия вполне понятна

Примеры поливания. Твоя агрессия от бессилия и голящей жопы.

ты прогнал какую-то херню

Естественно, а почему она херня ты объяснить не сможешь, я ведь правильно понимаю?

я там писал про микроконтроллеры и RISK как наглядный пример того, где надо понимать

У пацана случился риск, ну ничего - это пройдёт, мб.

как работает ассемблер

Как работает ассемблер - это так мило и как же он работает?

Ну обосрался ты с:

Вообще, все у тебя по дефолту выровняется, независимо от типа, до верхней границы слова.

Ну и с выравниванием по «машинному слову» тоже.

Ну обосрался-обосрался. Но нет же, ты продолжаешь, а теперь ещё нагоняешь больше перлов, загоняя себя ещё в большую лужу.

а на быдлянском x86 об этом думать не поможет

Причём тут х86? К чему ты это?

TrueTsar1C
()
Ответ на: комментарий от grimwaken

как учить - хз

Ну как я объясню рандомному пацану как учить, если он не обладает теми способностями, которыми обладал я. Он не умеет понимать - он умеет только цитировать талмуд и юзать шаблонные решение/представления, которым его научили.

Вон выше пацаны кукарекают про выравнивания, говоря абсолютно не логичные вещи - т.е. они просто говорят, как прочитали и это отложилось в их голове, у них когнитивный диссонанс работает на уровне подкорки, вызывая жопогение и отторжение, они не пытались ничего понять, как-то связать свои знания, как-то самому вывести утверждения заново. Это основная проблема всех пацанов - они ничего не пытаются сделать сами и жрут только готовое, поэтому всех из знания и выводы - не свои, а чьи-то, собственно по этой причине пацан и не может объяснить что, почему и во что он верует. Только цитатки и горящий пердак.

Ну и да, я ничего не учил.

Такое чувство, как будто ты нахватался каких-то вскукареков в языковых срачах и теперь просто употребляешь все эти базз-ворды.

Естественно, в которых я никогда не участвовал и не читал, вернее как - участвовал, смешивая с говнецом недоязычки и их адептов.

Это объективные требования. Спрашивай конкретней - я тебе опишу из чего это требование вытекает.

эффеткивная и быстрая

Сишка не эффективная - сишка позволяет писать эффективно, в отличии ото всякого мусора.

пусть они всех считают идиотами

Я не считаю всех идиотами. Они полезны.

сами заблуждаются

А как ты это определил? 99% хомячков не может ошибаться?

А ты просто мамкин бунтарь какой-то.

Да, мамкин, комнатный бунтарь. Да ещё не какой-то, а Царь всея мироздания.

Где твой радикальный взгляд на вещи, в чём он состоит?

Он не радикальный - он вменяемый. Основная идея сделать говно == не сделать ничего, а говно есть всё, что <= тому, что было раньше.

TrueTsar1C
()
Ответ на: комментарий от TrueTsar1C

блаблабла

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

Изначально речь шла о возвращаемом типе, int или char. Я пояснял за МК, о чем сразу и написал (тоесть за RISK и конкретнее ARM). При возврате из функции, в регистр возрата загрузится 32 бита информации (на Cortex-M4), независимо от того char там или int. Если инт, хорошо, обработается сразу, если чар, придется делать шифт.

Так же я написал, что на win 7 максималочке с 64 гигами памяти об этом думать бесполезно.

В чем я обосрался?

unt1tled ★★★★
()
Последнее исправление: unt1tled (всего исправлений: 1)
Ответ на: комментарий от TrueTsar1C

Причём тут х86? К чему ты это?

к тому, что CISC не RISC, в киске существуют операции с укороченными типами данных, в риске же — лоад-стор и загружать эффективнее всего слова, отсюда и каша провыравнивание

unt1tled ★★★★
()
Ответ на: комментарий от unt1tled

Изначально речь шла о возвращаемом типе, int или char.

Речь шла о выравнивании - слив засчитан. Ну хоть спорить не стал - молодец.

При возврате из функции, в регистр возрата загрузится 32 бита информации (на Cortex-M4)

и? В арме нету не 32битных регистров, вернее алиасов. Что из этого следует?

Если инт, хорошо, обработается сразу, если чар, придется делать шифт.

Что за херню ты несёшь, какой ещё нахрен шифт? Чар ничем не отличается от инта, это первые 8бит инта.

Так же я написал, что на win 7 максималочке с 64 гигами памяти об этом думать бесполезно.

О чем ты там думаешь?

В чем я обосрался?

Выравнивается везде по «машинному слов» - раз. Читать из памяти не выравненные по границе «машинного слова» любыми байтами/полусловами тормазит.

Ну и шифты.

TrueTsar1C
()
Ответ на: комментарий от unt1tled

к тому, что CISC

Куллстори. На уровне системы команд.

в риске же — лоад-стор и загружать эффективнее всего слова

Нет, каша с выравниваем патамучто граница. Для этого существует выравнивание по типу данных - этого достаточно, это гарантирует, что то, что на границу слова ничего не попадёт.

Это про выравнивание на уровне памяти.

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

Т.е. производительность байта на мув и байта на слово - должна быть одинакова - я даже щас загуглю мануальчик.

TrueTsar1C
()
Ответ на: комментарий от TrueTsar1C

Выравнивается везде по «машинному слов» - раз.

до верхней границы слова:

int i;
char c;
int a;

память между i и а выравняется до верхней границы слова.

Читать из памяти не выравненные по границе «машинного слова» любыми байтами/полусловами тормазит.

это так

Ну и шифты.

когда ARM грузит что-то меньше слова, он делает wide, а это операция битшифт

еще вопросы будут, питушок-сливальщик?

unt1tled ★★★★
()
Ответ на: комментарий от unt1tled
Unaligned word or halfword loads or stores add penalty cycles. A byte aligned halfword
load or store adds one extra cycle to perform the operation as two bytes. A halfword
aligned word load or store adds one extra cycle to perform the operation as two halfwords.
A byte-aligned word load or store adds two extra cycles to perform the operation as a byte,
a halfword, and a byte. These numbers increase if the memory stalls. A STR or STRH cannot
delay the processor because of the store buffer.

Т.е. всё стандартно. Пенальти только на не выравненых по СВОЕЙ длине словах и полусловах, но не на байтах, что логично.

TrueTsar1C
()
Ответ на: комментарий от unt1tled

до верхней границы слова:

Это одно и тоже.

память между i и а выравняется до верхней границы слова.

Память между i и a не выравнивается, выравниваются i и a по sizeof(i) и sizeof(a) соответственно - обсёр раз.

это так

Нет.

когда ARM грузит что-то меньше слова, он делает wide, а это операция битшифт

Где можно про это прочитать?

TrueTsar1C
()
Ответ на: комментарий от ChuCha

Не знаю. Гуглить по ключевым словам. На русском мало что есть и то в основном протухшее.

То, о чем мы спорим выводиться банальной логикой, но т.к. у пацанов с логикой того, то и получаются споры.

TrueTsar1C
()
Ответ на: комментарий от TrueTsar1C

память между i и а выравняется до верхней границы слова.

Память между i и a не выравнивается, выравниваются i и a по sizeof(i) и sizeof(a) соответственно - обсёр раз.

linux выравнивает стек по long, ABI гарантирует это

это так

Нет.

нет да

когда ARM грузит что-то меньше слова, он делает wide

Где можно про это прочитать?

в любой книге по архитектуре ARM, желательно с Thumb(2) и поновее; в интернетах не знаю

unt1tled ★★★★
()
Ответ на: комментарий от TrueTsar1C

Так же с 2-мя байтами. Если ты подумаешь, то возможно сможешь вывести правильную формулу - выравнивание нужно по границе ширины читаемого «слова/байта».

Как это противоречить тому, что я написал?

Ну да, байт определенной операцией дополняется до машинного слова и мы дальше работаем с этим байтом, к примеру.

ЯННП, короче говоря.

А за AGU спасибо, не знал, но явно, что в первых моделях Pentium 4 его не было ;-)

Twissel ★★★★★
()
Ответ на: комментарий от unt1tled

linux выравнивает стек по long, ABI гарантирует это

Причём тут стек? причём тут линукс? Ты пытаешься спасти свою пробитую жопу скатываясь с уровня памяти и процессора до аби. Молодец, неслабо подпалило, загуглил чтоли?

Ну молодец, авось ещё и мануальчик почитаешь и ваще молодцом будешь.

нет да

Вперёд пруфец - я тебе скопипасти пасту из мануала - ты пока только в штанишки нагадил.

в любой книге по архитектуре ARM, желательно с Thumb(2) и поновее; в интернетах не знаю

Очередной обсёр. Т.е. мануал уже не работает, нужна книжка, которой нет в интерентах? Куллстори, куллстори. http://infocenter.arm.com/help/topic/com.arm.doc.ddi0439b/DDI0439B_cortex_m4_... - идёшь, читаешь и ищешь.

TrueTsar1C
()
Ответ на: комментарий от Twissel

Как это противоречить тому, что я написал?

Обыкновенно - ты написал выравнивается по «машинному слов», а это не так, вернее это не имеет смысла.

ЯННП, короче говоря.

Выравнивание нужно, чтобы не быть на границе всяких разграничителей, начиная от ширины чтения из «памяти», заканчивая страницами и прочей мурой.

Для случая из данного контекста: Допустим, процессор у нас читает по 4байта.

[****][****] - нам нужен инвариант, который позволит для любого обращения читать 1раз. Читать мы может 1-2-4 байтами.

Как поддержать этот инвариант? Для единицы он всегда работает - нужно выравнивание по 1, для 2 - он не работает на нечётных, т.е. нужно выравнивание по 2.

В этом суть выравнивания. Поддерживая этот инвариант для 4-х байт - он будет работать всегда, на любых степенях двойки.

TrueTsar1C
()
Ответ на: комментарий от TrueTsar1C

Ага) Вот это другое дело, благодарю.

Добавлено

Хотя знаешь, откуда у меня в голове это отложилось — В начале было слово и слово было два байта . Теперь вроде как все на своих местах.

Twissel ★★★★★
()
Последнее исправление: Twissel (всего исправлений: 1)
Ответ на: комментарий от TrueTsar1C

как ты эпически облошариваешься в каждом сообщении, мне даже читать стыдно :)

ладно, ты меня устал, продолжай пердеть без меня

unt1tled ★★★★
()
Ответ на: комментарий от unt1tled

Обосраться и свалить, героически заявив о победе. Вся суть звёздачных балаболистых экспертов.

TrueTsar1C
()
Ответ на: комментарий от unt1tled

Не, ну ты мне объясни. Почему у меня ссылки на мануалы, логику и прочее, а у тебя только на «ты питух» и «я читал в мистической книжке, которую я тебе не покажу». Почему у тебя ничего из этого нет?

TrueTsar1C
()
Ответ на: комментарий от TrueTsar1C

Как поддержать этот инвариант? Для единицы он всегда работает - нужно выравнивание по 1, для 2 - он не работает на нечётных, т.е. нужно выравнивание по 2.

В этом суть выравнивания. Поддерживая этот инвариант для 4-х байт - он будет работать всегда, на любых степенях двойки.

Потому, что «четыре» - это особое магическое число, магия которого магичнее любых других степеней двойки, будь то 1, 2, 8 или 16. Неслучайно в эзотерике и натурфилософии различают четыре стихии — огонь, земля, воздух и воду, а по-китайски понятие «смерть» и «четыре» звучат одинаково («сы» 四 - 死), то это считается крайне плохим знаком и препятствует криворуким китайцам испортить ещё и выравнивание четырёхбайтных чисел в своих стрёмных процессорах.

anonymous
()
Ответ на: комментарий от anonymous

Давай специально для лалок поясню, степени двойки - это не рид на любую степень двойки, а границы любых степеней двойки. Там это ясно из контекста:

Выравнивание нужно, чтобы не быть на границе всяких разграничителей, начиная от ширины чтения из «памяти», заканчивая страницами и прочей мурой.

И там так же ясно откуда взялось 4:

Допустим, процессор у нас читает по 4байта.

TrueTsar1C
()
Ответ на: комментарий от TrueTsar1C

Допустим, процессор у нас читает по 4байта.

И то, что «для 2 - он не работает на нечётных, т.е. нужно выравнивание по 2.» - это интимные трудности конкретной реализации того процессора, если бвухбайтовое число там лежит по смещению +1 к границе. Он его уже вычитал в твоём контексте, можно и не вычитывать снова.

Но смешнее всего, как из частного случая ты вывел общее правило - четыре, мол, и всё тут.

anonymous
()
Ответ на: комментарий от anonymous

это интимные трудности конкретной реализации того процессора, если бвухбайтовое число там лежит по смещению +1 к границе.

Тут конкретно написано:

на границе всяких разграничителей, начиная от ширины чтения из «памяти»

Здесь разбирается конкретный разграничитель, а именно «ширина чтения». Из контекста выводится, что инвариант строится для не попадания по это границе.

Чтение там пример, как для чего собственно это нужно, а пример выбран из контекста их разговора.

Он его уже вычитал в твоём контексте, можно и не вычитывать снова.

Что конкретно он вычитал?

Но смешнее всего, как из частного случая ты вывел общее правило - четыре, мол, и всё тут.

Я вывел общее(относительно границ) правило для частного случая, а до этого вывел общие правило в целом(относительно границ и ширины чтения), а именно - выравнивание по ширине читаемого(а оно всегда степень двойки) гарантирует нам, что мы не попадём чтением по любой границе(которая всегда степень двойки).

TrueTsar1C
()
Ответ на: комментарий от Weres

Ни у кого, кроме книг не хватит терпения нас учить

отлить в гранит

qulinxao ★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.