Erik
Только если в отладке и прерываниях
Блин, вот знаешь, есть в изучении любого дела момент, когда ловишь лютый инсайт, и появляется озарение по типу "Ах вот как это работает, теперь понял". Так вот, очень сложно дойти до этого в изучении низкоуровневых вещей) больше времени надо, наверное
Anonymous
Типо есть понимание, будто, как делать mov, там, inc dec jmp, но до конца в единый пазл собака такая складываться не хочет
Не совсем понял, но если всё же это так, то подобно тому, когда изучаешь С, то в книгах часто пишут что оператор printf, можно самому написать и не использовать стандартный. Вот только новичкам не стоит этим голову забивать. Лучше изучить основу яз.прог., а потом постепенно наращивать свои навыки, чем поддаваться искушению делать всё и сразу
Anonymous
Имеешь ввиду, поучить сначала яп высокого уровня, а потом углубляться?
Нееет! Имею ввиду, что нужно изучить основы, простое, а не сразу браться за сложные задачи или понимания
Erik
Нееет! Имею ввиду, что нужно изучить основы, простое, а не сразу браться за сложные задачи или понимания
Аа, понял))) да, к сожалению, это проблема) у меня как у многих людей желание "Получить все, здесь, и сразу") и я это понимаю)) часто интерес пересиливает терпение)
Erik
Есть опыт на разных яп'ах, но задумался я всерьез о низком уровне, когда наткнулся на указатели в плюсах, и не смог понять, что это. Тогда и пришла идея, что надо идти снизу вверх, с основ архитектуры устройств ЭВМ впринципе. Тогда и настоящее понимание придет о многих вещах вроде
Erik
Ну, еще я видел какую крутую графику люди запихивают в 4кб Хочу так же😂😂😂😂
Anonymous
Есть опыт на разных яп'ах, но задумался я всерьез о низком уровне, когда наткнулся на указатели в плюсах, и не смог понять, что это. Тогда и пришла идея, что надо идти снизу вверх, с основ архитектуры устройств ЭВМ впринципе. Тогда и настоящее понимание придет о многих вещах вроде
Да указатель это вообще банальнейшая вещь, но в ЯВУ её так коверкать начали... ужас! lea eax, dword[str] ; mov eax, str EAX — указатель на str, хотя многие ЯВУшнкии начнут сейчас прыгать, мол "неет!! Это не так! Это тип данных!", но факт в том, что указатель как понятие появилось ещё давно, задолго до того, как в ЯВУ стал типом данным.
Erik
чет многовато -4кб. обычно 256 в тренде
Может) не сильно пока разбираюсь)
Anonymous
Но компиляторы часто генерируют вот так: str: db '123', 0 p_str: dd str ; указатель Вроде из-за того, что некоторые функции требуют передавать именно в таком виде, а не просто адрес.
Aiwan \ (•◡•) / _bot
Что же у Вас всё так сложноXD Видимо один такой: не понял, немучай голову, изучаем дальше 👉👈
тебе объяснить на пальцах про указатели (недавно объяснял одному челу для крестов, будучи вообще их не зная)?
Anonymous
тебе объяснить на пальцах про указатели (недавно объяснял одному челу для крестов, будучи вообще их не зная)?
Благодарю, не надо) Мне пока достаточно ссылок (хотя мне кажется что это одно и тоже). В С в структурах часто описывались указатели
Erik
тебе объяснить на пальцах про указатели (недавно объяснял одному челу для крестов, будучи вообще их не зная)?
Ну, насколько я понял, указатель - это то, как он собственно и называется. Он указывает на область в памяти. А что в этой памяти, другой вопрос уже. Типо если в две разных функции передать указатели на один и тот же участок в памяти, то обе функции этих будут воздействовать на одни и те же данные
Anonymous
на пальцах понятнее
Олдскульная математика:)
Anonymous
Лять, ссылки, указатели. Пипец вообще, сложнааа
Это ЯВУшники наворотили. В ассемблере такой ерунды не будет
Erik
Зачем ссылки, если есть указатели. Че за приколы
Aiwan \ (•◡•) / _bot
Зачем ссылки, если есть указатели. Че за приколы
зачем ссылки и указатели, когда есть адреса/смещения?
Anonymous
Зачем ссылки, если есть указатели. Че за приколы
Это тоже самое, только обозвали иначе. Ну типа ссылаемся на массив в памяти (только не бейте: в настаящее время практикую js)
Erik
Это тоже самое, только обозвали иначе. Ну типа ссылаемся на массив в памяти (только не бейте: в настаящее время практикую js)
Ну да, я хотел написать, выполняют одну и ту же функцию по сути. Дают доступ к данным, не копируя их
Anonymous
Зачем ссылки, если есть указатели. Че за приколы
Суть в том, что в ЯВУ int a = b; Это присвоить переменной a значение b (Понятнее будет динамически) b: dd 1 a: dd 0 mov eax, dword[b] mov dword[a], eax А когда нужно получить адрес, нужно использовать int a = &b; — ссылка. Тогда будет: mov dword[a], b А указатель в ЯВУ как раз будет вот так: int *a = &b; Значит: b: dd 1 a: dd b
Anonymous
Я с js'a вошел в айти)))
С асм познакомился когда вирус лечил👉👈 В начале курса в универе в методичке начитался про асм, а тут винду заразили, ну и через push какие-то данные ему влил и вирус умер. А так ни в какую не хотел удаляться. Сразу предупрежу, мне просто повезло, а не какой-нибудь там уникум прогерXD
Erik
Суть в том, что в ЯВУ int a = b; Это присвоить переменной a значение b (Понятнее будет динамически) b: dd 1 a: dd 0 mov eax, dword[b] mov dword[a], eax А когда нужно получить адрес, нужно использовать int a = &b; — ссылка. Тогда будет: mov dword[a], b А указатель в ЯВУ как раз будет вот так: int *a = &b; Значит: b: dd 1 a: dd b
А можно вопросы по этому ассемблерному коду? b: dd 1 - означает, поместить в озу значение 1 с размером dd( не помню как расшифровывается), и меткой(адресом? ссылкой? указателем?) b. mov eax, dword[b] - достать из озу значение по адресу b, с размером dword и поместить в регистр еах. Ну дальше по аналогии. Правильно?
Erik
Да. dword это 4 байта, то есть будет вот так выглядеть значение: 00000001
А еще получается, что еах, это младшая половина регистра rax, и если там что-то есть, то регистр rax уже не вариант использовать?
Anonymous
А еще получается, что еах, это младшая половина регистра rax, и если там что-то есть, то регистр rax уже не вариант использовать?
Ну не совсем.. RAX (верхние 4 байта) и EAX процессор не соединяет. Если в EAX положить 1, то весь RAX сбросится.
Erik
Просто Столяров писал о том, что например есть ЕАХ, у него есть две половины по 16 бит, AL и AH, и получается, что это части одной единой сущности. Если ты что-то положишь в AL, а потом в EAX, то AL перетрется
Anonymous
12345678 12345678 ..RAX.......EAX mov eax, 1 00000000 00000001 ..RAX.......EAX ————————————- 12300000 00000000 ..RAX.......EAX mov rax, 0x1212345678 00000012 12345678 ..RAX.......EAX
Anonymous
Erik
по переписке в личке? 😏
Не, коллегу по работе именно) работали в одной компании) он кстати сишник, а я там был сисадмином линуксовым
Владимир
Не, коллегу по работе именно) работали в одной компании) он кстати сишник, а я там был сисадмином линуксовым
Понятно, если что я тоже новичок. Выбирал между C и C++, в итоге остановился на FASM. Ну а так, я любитель подушить питона в свободное время 😁
Владимир
Хочу написать свою ось на базе кос для малины 😂
Erik
С нуля.
Без смс и регистрации))
Владимир
С нуля.
Скорее с минусов, так как знаний до сих пор вообще нет, но зато очень интересно ковырять то, что совсем не понимаю
Erik
Вообще, главная цель лично у меня, через асм разобраться по лучше с си, и начать разрабатывать на нем)
Erik
Столько крутых вещей люди на си творят, этож целый мир
Erik
Ахахахах))
Erik
Вообще, главная цель лично у меня, через асм разобраться по лучше с си, и начать разрабатывать на нем)
Ну, может преувеличил) скорее это будет как побочный эффект)) понимание многих вещей само придет)
Владимир
Я сам такой, иду тоже к Си через постель 😏
Erik
Я сам такой, иду тоже к Си через постель 😏
Ну, я комбинирую этот подход с подходом товарища Столярова, который настаивает, что Си это не лучший первый язык. Поэтому я и с асм-ом балуюсь и постигаю его потихоньку, и делаю примеры из книжки на паскале.
Владимир
Ну, я комбинирую этот подход с подходом товарища Столярова, который настаивает, что Си это не лучший первый язык. Поэтому я и с асм-ом балуюсь и постигаю его потихоньку, и делаю примеры из книжки на паскале.
Вообще кроме написание своей оси, я хочу разобраться в IoT, а там вроде бы без Си не ничего не напишешь на ардуино, вот и решил поизучать данное направление. Хочу чтобы мой чайник не только кипятил воду, но и сильно не кипятился когда будет общаться с умной колонкой 😁
Anonymous
Обычно знакомятся чтобы написать, ну или кто желёзки разрабатывает)
В моём случае произошло так) Почитал методичку в которой описывался асм (если честно, тогда ещё ни одной программы не компилил). В инете скачал отладчик, и все прочитанные асм команды разглядывал через него прогоняя все подряд проги (ну от нотепада до винапа)). Не мог понять как компилить, по этому изучал такXD А тут ещё и вирус прилетел, вот и практика))
Anonymous
На винде прерывания не стабильны, могут измениться в любой момент
Не в любой момент, а в любой релиз новой сборки Windows
Владимир
В жопу пердуину.
А чё тогда посоветуешь для иота?
Владимир
В этом случае полезно изучать С + linux🤔 *linux -- это прежде всего ядро!
Понятное дело что линукс это ядро, но говорят плюсы не очень. Может лучше остановиться на fasm + си?
Владимир
STM32
А чё там только х32 архитектура?
­
А чё там только х32 архитектура?
Ну можешь на 8-и битных AVR делать.
Владимир
Ну можешь на 8-и битных AVR делать.
Неее, я не про это. Разве сейчас не х64 рулят или для таких вещей не нужна 64 архитектура?
Anonymous
Зачем микроконтроллеру x64?...
Anonymous
32-разрядный это уже будет до головы.
Владимир
Ну я не знаю, поэтому и спрашиваю