Как установить nasm на mac os

Обновлено: 05.07.2024

English version of site here.

SASM (SimpleASM) - простая кроссплатформенная среда разработки для языков ассемблера NASM, MASM, GAS, FASM с подсветкой синтаксиса и отладчиком. В SASM Вы можете легко разрабатывать и выполнять программы, написанные на языке ассемблера. Вводите код в форму и запускайте приложение. Программа работает "из коробки" и хорошо подойдет для начинающих изучать язык ассемблера. Основана на Qt. Распространяется по свободной лицензии GNU GPL v3.0.

SASM

Для загрузки программы на Linux перейдите по соответствующей ссылке и выберите ваш дистрибутив и архитектуру (i386 / amd64).

Вы также можете собрать SASM из исходников, которые можно найти в GitHub репозитории или скачать SASM в zip-архиве для Windows.

Если Вы пользователь Mac, возможно, Вам поможет эта заметка об установке SASM на Mac (спасибо Brian R. Hall), а также это обсуждение в GitHub Issues.

Поддержите проект

WebMoney: Z282016332582 и R331674303467

О программе

Программа поддерживает работу с несколькими проектами – новые файлы открываются и создаются в новых вкладках. При выходе из программы текущий набор открытых файлов сохраняется. При следующем запуске Вы сможете восстановить предыдущую сессию. В параметрах настраивается шрифт, цветовая схема и текст, отображающийся при создании нового файла. Интерфейс программы доступен на восьми языках (русский, английский, турецкий (спасибо Ali Goren), китайский (спасибо Ahmed Zetao Yang), немецкий (спасибо Sebastian Fischer), итальянский (спасибо Carlo Dapor), польский (спасибо Krzysztof Rossa), иврит (спасибо Elian Kamal), испанский (спасибо Mariano Cordoba)). Все окна в программе плавающие, с возможностью закрепления в одной из множества позиций. Имеется возможность переназначения горячих клавиш.

Стандартное меню "Правка" дополнено возможностью комментирования/раскомментирования выделенного куска кода и создания/удаления отступа в 4 пробела (Tab/Shift+Tab).

В SASM вы можете находить ошибки в своих программах с помощью интерфейса к отладчику gdb. В программе можно просматривать значения регистров и переменных, а также устанавливать точки останова и перемещаться по отлаживаемой программе. Дополнительно имеется возможность выполнять произвольные команды отладчика gdb, результаты которых будут отображаться в логе.

SASM полностью поддерживает работу с четырьмя ассемблерами NASM, MASM, GAS, FASM в двух режимах - x64 и x86, переключаться между которыми можно в настройках на вкладке "Построение". Там же можно изменить опции ассемблера и компоновщика и выбрать, какие программы будут использоваться для ассемблирования и компоновки.

SASM

Устранение неполадок

Если у Вас что-то работает не так (происходят ошибки при компиляции, отладке и др.), пожалуйста, прочитайте главу "Устранение неполадок" в справке в программе (F1) или в Wiki проекта на GitHub. Возможно, там Вы сможете найти полезный совет для решения Вашей проблемы.

Библиотека макросов для NASM "io.inc"

В программу включена библиотека макросов для NASM "io.inc". В ней есть кроссплатформенные команды ввода-вывода и макросы: CMAIN - точка входа и CEXTERN для доступа к внешним функциям на языке C. Подробнее о ее командах Вы можете узнать здесь или ниже.

Реализация

Windows

В качестве ассемблера для NASM используется nasm 2.11.02, в качестве компоновщика - gcc 4.6.2 из MinGW (gcc 4.8.1 из MinGW64 в режиме x64) или ld 2.22 из MinGW (ld 2.23.2 из MinGW64 в режиме x64).

Версии ассемблеров и компоновщиков для NASM подобраны с учетом рекомендуемых программ для курса "Архитектура ЭВМ и язык ассемблера" ВМК МГУ 1-го потока.

Также в программу включен отладчик gdb 7.4 (7.6 для x64) из пакета MinGW и немного измененная для отладки библиотека макросов ввода-вывода.

Начиная с версии 3.0, в SASM включены fasm 1.71.39 и gas 2.23.1 из MinGW (gas 2.23.2 из MinGW64).

Ассемблер MASM невозможно было включить в сборку из-за его лицензии. Чтобы им воспользоваться, Вы должны установить MASM на Ваш компьютер с сайта https://www.masm32.com/ и указать пути до ассемблера (ml.exe, путь обычно "C:/masm32/bin/ml.exe") и до компоновщика (link.exe, путь обычно "C:/masm32/bin/link.exe") в соответствующих полях на вкладке "Построение".

Под Windows SASM после установки сразу готов к работе.

Linux

Для работы программы на Linux должны быть установлены: nasm или gas (если их планируется использовать, fasm уже включён в сборку), gcc, gdb (для отладки).

Больше информации о программе и её использовании можно получить в Wiki проекта на GitHub.

История изменений:

13.02.2021 - версия 3.12.1 (zip, exe):

  • Исправленa отладка при использовании с новыми версиями NASM.

08.02.2021 - версия 3.12.0 (zip, exe):

  • Запуск и отладка теперь проводятся в директории с текущим исходником (для удобного файлового ввода-вывода).
  • Поддержка UTF-8 по умолчанию.
  • Поддержка Qt 5 для Linux.
  • Португальский язык (спасибо alglus).
  • Исправлен некорректный доступ к памяти в макросе GET_DEC на Windows.

03.02.2020 - версия 3.11.1 (zip, exe):

  • Исправлена ошибка с горячей клавишей для раскомментирования.

31.01.2020 - версия 3.11.0 (zip, exe):

  • Исправлены ошибки при отладке в GDB 8.
  • Исправлен разбор регистров.
  • Исправлена ошибка, приводящая к падению при клике в окне "Память" (спасибо Hofmer13).
  • Исправлена ошибка, при которой пропадала горячая клавиша отладки.
  • Исправлена ошибка с открытием файлов без расширений.
  • Добавлено сохранение файла перед сборкой.
  • Добавлен поиск выделенного текста.
  • Исправлен перевод на итальянский (спасибо Mek101).

08.10.2018 - версия 3.10.1 (zip, exe):

  • Исправлена ошибка, при которой из компоновки исключались файлы, необходимые для работы функций ввода-вывода библиотеки "io.inc".

01.10.2018 - версия 3.10.0 (zip, exe):

  • Поддержка BSD OS (спасибо Martinfx).
  • Исправлена ошибка, приводящая к неработоспособности отладчика при использовании gcc с опцией PIE по умолчанию (спасибо lberserq).
  • Добавлена поддержка испанского языка (спасибо Mariano Cordoba).
  • Небольшие исправление в настройках программы.

12.09.2017 - версия 3.9.0 (zip, exe):

  • Более удобный просмотр значений по адресу.
  • Исправлена ошибка, приводящая к падению отладчика (спасибо lberserq).
  • Добавлена поддержка польского языка (спасибо Krzysztof Rossa).
  • Добавлена поддержка иврита (спасибо Elian Kamal).

19.02.2017 - версия 3.8.0 (zip, exe):

  • Улучшен разбор регистров при отладке.
  • Добавлена опция запуска ассемблера в текущей директории.
  • Добавлена поддержка итальянского языка.

30.10.2016 - версия 3.7.0 (zip, exe):

  • Добавлена поддержка китайского языка.
  • Добавлена поддержка немецкого языка.
  • Исправлена ошибка, приводящая к невозможности повторного запуска программы после аварийного завершения.
  • Исправлена ошибка, при которой вывод программ, содержащий непечатные символы, не отображался полностью.

25.09.2016 - версия 3.6.0:

  • Добавлена поддержка турецкого языка.
  • Улучшено добавление отступов при нажатии клавиши Tab.

26.08.2016 - версия 3.5.1:

  • Исправлены ошибки с отладкой, drag & drop и другие мелкие ошибки.

19.03.2016 - версия 3.5.0:

  • Поддержка компоновщика GoLink.
  • Исправлена ошибка с неправильным именем файла при отркытии или сохранении.

11.02.2016 - версия 3.4.0:

  • Изменение цвета номеров строк.
  • Возможность отключения автоматической вставки отладочной строки.

27.01.2016 - версия 3.3.0:

  • Однооконный режим.
  • Функция drag & drop для открытия файлов. Чтобы открыть файл, можно просто перетащить его на окно программы.
  • Улучшенная справка: расширена часть "Устранение неполадок", добавлена часть "Настройка системы сборки".
  • Исправление множества ошибок, включая ошибку с системно-зависимыми путями и ошибку при показе регистров x87 FPU.

14.06.2015 - версия 3.2.0:

  • Добавлена возможность отключения запуска компоновщика.
  • Обновлён FASM: новая версия 1.71.39.
  • Исправлены некоторые ошибки, возникающие при отладке.

27.05.2015 - версия 3.1.4: исправлена ошибка, возникающая при использовании в системе локализованной версии objdump.

30.03.2015 - версия 3.1.3: добавлено отображение информации о полученных программой сигналах (в т. ч. об ошибках, возникающих в ходе её работы) при отладке.

27.03.2015 - версия 3.1.2: улучшена работа при отладке файлов с директивой include.

24.03.2015 - версия 3.1.1: исправлены ошибки с подсветкой синтаксиса.

24.07.2014 - версия 3.0.1: добавлена возможность просмотра дополнительных регистров (xmm, st и других).

13.07.2014 - версия 3.0:

  • Добавлена поддержка новых ассемблеров, кроме NASM - GAS, MASM, FASM, включая подсветку синтаксиса, отладку и поддержку архитектур x86 и x64. Появилась возможность выбрать вручную ассемблер и компоновщик, а также изменить опции сборки программы.
  • Значительно улучшена работа отладчика, стало возможным отлаживать программы даже без отладочной информации для GDB (например, написанные на MASM). В отладчике добавлена возможность приостановить программу, а также установить точку останова во время её выполнения.
  • Добавлена папка для include файлов.
  • Исправлены проблемы с загрузкой процессора текстовым редактором при открытии больших файлов с исходным кодом. Исправлена ошибка с нарушением работы интерфейса после открытия окна настроек. Исправлено множество мелких ошибок и недочетов.

23.04.2014 - версия 2.3.1: исправлена ошибка, возникающая при наличии пробелов в пути до временной директории (в частности восстановлена работа SASM на Windows XP).

03.04.2014 - версия 2.3:

  • Добавлена возможность выбора режимов x64 или x86 и изменения опций ассемблера и компоновщика. Добавлен инструментарий для компиляции и отладки 64-битного кода. Реализована подсветка 64-битных регистров и команд. Библиотека "io.inc" адаптирована для использования в 64-битных приложениях.
  • Добавлена подсветка команд макроассемблера NASM.
  • Исправлено множество мелких ошибок, в том числе улучшено отображение окна переменных при отладке, исправлена ошибка при считывании в стек макросами из "io.inc".

16.02.2014 - версия 2.2:

  • Значительно улучшен интерфейс программы и её юзабилити, исправлено множество ошибок. Добавлены выбор цветов фона и текста, а также полная настройка подсветки синтаксиса. Окна ввода-вывода и отладки стали плавающими (docking) окнами с многочисленными вариантами их расположения. Улучшены виджеты отображения регистров и памяти (добавлены автоподгонка под текст и возможность копирования), сделана возможность запоминания их состояния. Улучшен механизм точек останова - добавлена возможность остановки на метке (на строке с кодом ниже) и возможность её установки по горячей клавише. Улучшена отладка макросов - теперь они неотличимы от обычных инструкций. К действиям добавлены иконки, сделаны тулбары.
  • Комбинации горячих клавиш приведены в соответствие со стандартными, добавлена возможность их переназначения.

13.11.2013 - версия 2.1:

  • Исправлено множество ошибок, исправлены проблемы совместимости - созданы установочные пакеты для многих Linux-систем на OBS, налажена совместимость с Qt 4, а также упрощена сборка из исходников.
  • Сделано много улучшений, расширена функциональность. В частности, в отладчике - добавлены: просмотр регистров, просмотр памяти, точки останова и команда "продолжить"; улучшены: выполнение произвольных команд gdb, подсветка текущей строки, последовательный вывод во время отладки (изменены макросы io.inc).
  • Компиляция теперь выполняется во временных папках - пропала необходимость в специальных правах при запуске программы.
  • Добавлена отметка о несохраненном документе. Добавлен последовательный вывод в программах. Добавлено отображение статуса завершения программы. Добавлен вывод времени работы программы. Добавлен выбор шрифта.
  • Обновлена справка. Сделана новая иконка. Еще множество минорных улучшений и исправлений.

04.06.2013 - версия 2.0: сделаны все запланированные изменения - реализован отладчик, улучшена подсветка, стало возможно работать с несколькими файлами, SASM (новое название) полностью переписан на Qt и теперь с открытым кодом и кроссплатформен. Исходники выложены на GitHub, сюда же переехал и сайт. Если Вам нужны более ранние версии программы, Вы можете их найти на предыдущем сайте.

21.04.2013 - версия 1.0.4 - исправлена ошибка с CEXTERN.

18.03.2013 - версия 1.0.3 - исправлены ошибки подсветки синтаксиса, теперь подсвечиваются все ключевые слова NASM, исправлен запуск программ на MASM.

10.03.2013 - версия 1.0.2 - исправлены ошибки, добавлено автосохранение кода и пути.

Программирование на языке ассемблера NASM для ОС Unix


Текст этой книги в переработанном виде вошёл в состав "Введения в профессию" в виде третьей части (во втором издании это первый том, в первом издании был второй); небольшие фрагменты материала также вошли в первую (вводную) часть. Переизданий этого материала в виде отдельной книги больше не планируется. Автор настоятельно рекомендует читать Программирование: введение в профессию вместо данной (и сейчас уже устаревшей) книги.

Аннотация

Пособие основано на лекциях, читавшихся автором в рамках курса «Архитектура ЭВМ и язык ассемблера» в Ташкентском филиале МГУ весной 2007 года; часть материала также прошла апробацию в рамках курса «Архитектура ЭВМ и системное программное обеспечение» кафедры Прикладной математики МГТУГА в 2008, 2009 и 2010 гг.

Пособие ориентировано на практические занятия с использованием системы команд i386, «плоской» (бессегментной) модели памяти, ассемблера NASM и операционной системы Linux или FreeBSD; в частности, описываются конвенции системных вызовов обеих систем, также для обеих систем приводятся исходные тексты файлов с макроопределениями, призванными облегчить ассемблерное программирование на ранних этапах изучения дисциплины.

Бумажные публикации

Электронная версия

Статус бумажной версии

Издание поступало в свободную продажу. К настоящему времени полностью распродано.

Прикрепленный файлРазмер
Файл stud_io.inc для FreeBSD2.08 кб
Файл stud_io.inc для Linux2.21 кб
Архив с текстом примера greet из пар. 5.3 (часть II)1.38 кб
Программа cmdl.asm из пар. 4.4 (часть II)1.1 кб
Программа match.asm из пар. 2.6.9 (часть I)1.7 кб

Trailing whitespaces

admin аватар

ах ты ж чёрт

Спасибо

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

admin аватар

Пожалуйста :-)

Только зачем это старьё читать? При подготовке второго тома я материал этой книжки изрядно причесал и вообще всячески улучшил.

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

Читаю страницу

Читаю страницу 32:
"Макрос PUTCHAR предназначен для вывода на печать одного символа. Наконец, аргументом этого макроса может выступать исполнительный адрес заключенный в квадратные скобки"

Вот эта программа с посимвольным выводом строки работает правильно:

А вот если раскомментировать две строки (просто исполнительный адрес берется из EDX), вылетает с треском. Где я ошибаюсь?

admin аватар

Очевидно же:

Первая из этих двух команд берёт четыре байта, которые лежат в памяти по адресу string+eax, и кладёт их в edx. Вторая ЭТО использует в качестве адреса, тогда как по смыслу там не адрес вовсе, а первые четыре байта вашей строки. Внимательнее, внимательнее.

Да уж!

Это я не подумавши сделал! )))
Ну, то есть, сначала-то сразу указатель отдавался на разыменование PUTCHAR, а потом добавил транзит через EDX, типа, "какая разница"! Вот она и "разница", бедный указатель разыменовали дважды. А вроде, все просто!
Погорячился, был неправ. Спасибо.

Если вы бы не

Если вы бы не писали сокращенно команды, многое стало бы очевидным и хватало бы времени подумать. Пишите "offset, byte ptr и т.п." и не используйте "mov" для определения адреса ("lea"). Не давайте компилятору повода додумывать за вас что вы написали.

admin аватар

В nasm'е нет ни слова offset, ни этого страшного byte ptr. К большому счастью. Вы бы хотя бы разобрались сначала, о каком ассемблере идёт речь и как он устроен, а потом уже лезли со своими нелепыми советами, особенно насчёт применения lea вместо mov.

Ошибка компоновщика

iMac-OMG-4:Documents Sharab$ nasm -f elf hello.asm
iMac-OMG-4:Documents Sharab$ ld hello.o -o hello
ld: warning: -arch not specified
ld: warning: -macosx_version_min not specified, assuming 10.10
ld: warning: ignoring file hello.o, file was built for unsupported file format ( 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 ) which is not the architecture being linked (x86_64): hello.o
Undefined symbols for architecture x86_64:
"start", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for inferred architecture x86_64

admin аватар

попробуйте ld -m

попробуйте ld -m elf_i386

Не сработало

iMac-OMG-4:Documents Sharab$ ld -m elf i386
ld: warning: option -m is obsolete and being ignored
ld: file not found: elf
iMac-OMG-4:Documents Sharab$

admin аватар

У меня нет макоси, так что попробовать не могу. Проблема здесь в том, что nasm выдаёт 32-битный код (и в книжке описано программирование именно для 32-битной системы команд), а ваш линкер пытается из этого сделать 64-битное приложение. Естественно, у него ничего не получается. Как ему сказать, чтобы он делал 32-битный исполняемый файл, я не знаю, как не знаю и того, возможно ли это вообще под макосью. Попробуйте на него документацию почитать. Из того, что сходу нашлось в интернете, могу предложить попробовать -arch i386 но не факт, что это поможет.

Nasm под MacOS

"возможно ли это вообще под макосью"

Говорят: "Можно и зайца научить курить, нет ничего невозможного". Если мой заяц не притворяется, MacOS Sierra 10.12.1, nasm 2.12.02, то так:

Ниже - содержимое файла hello1.asm. (Пример hello5.asm к книге так не запустится. Думаю, придется поменять имена, начинающиеся с _ в файле и в stud_io.inc и проверить в stud_io.inc выравнивание стека (кратно 16?))

admin аватар

Прикольно :-)

То есть там конвенция BSD, причём даже 32-битные приложения поддерживаются. Само по себе это прикольно, спасибо за результаты эксперимента, заодно мы теперь знаем, что точка входа там называется start без подчёркивания в начале. Может быть, вы ещё расскажете, как туда Nasm поставить?

Но вот насчёт стека не вполне понятно, когда он, по-вашему, должен быть кратен 16? На момент int 80h? Так он и в вашем примере не кратен. А подпрограмм никаких в stud_io.inc нет.

поставить Nasm на MacOS

>Может быть, вы ещё расскажете, как туда Nasm поставить?

Это не очень детективная история.

stud_io.inc

Да, я имел ввиду "расширение". На линуксе (лубунту) недавно, так что виндовская терминология не отпускает.
С этим файлом разобрался. Книга-супер. Подача материала отличная. Огромная благодарность за сей труд. Понял, что она должна у меня быть в бумажном виде - обязательно пройдусь по книжным магазинам.

За
Версии для Windows нет и не будет.

отдельный респект, свободой веет от неё.

admin аватар

На здоровье

В книжных этой книги нет, единственный вариант сейчас — заказать её на этом сайте, но этот вариант тоже скоро кончится. Книга издавалась тиражом 100 экз., какие там книжные.

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

Добрый вечер.

Добрый вечер. Подскажите, где можно взять файл "stud_io.inc" и в какую папку nasma положить? Пытался на этой странице взять, но куда и с каким разрешением положить не знаю.

admin аватар

Папки - в шкафу

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

Во-вторых, на вопрос "где взять" вы ответили сами. Файл следует взять на этой странице, выше есть ссылка.

В-третьих, чтобы всё сработало, этот файл должен находиться в той же директории, что и ваш файл, который вы транслируете nasm'ом. Вообще-то это довольно очевидно, если внимательно прочитать в книге, как работает макродиректива %include.

Но вот насчёт "с каким разрешением" — на такой вопрос я ответить не могу, я, пардон, даже представить себе не могу, что вы имеете в виду. Если имеется в виду действительно "разрешение", то такая характеристика присуща растровым графическим файлам, видео и (с некоторой натяжкой) аудио, но никак не текстовым файлам. Если имеются в виду "разрешения" (а не "разрешение"), то есть права доступа (один из очень кривых вариантов перевода термина "permissions"), то пользователь, под которым вы работаете, должен иметь права на чтение этого файла, только вряд ли это то, что вы имели в виду. Наконец, можно предположить, что имелось в виду "расширение" (то есть часть имени файла, указывающая на его формат и отделяемая от имени точкой) — в этом случае да будет вам известно, что это пресловутое "расширение" (extension) бывает только под Windows. В *nix-системах используется понятие "суффикс", которое не является однозначно связанным с типом файла и вообще необязательно. В применении к stud_io.inc таким суффиксом, очевидно, является ".inc".

На всякий случай отмечу, что, ежели вам пришло в голову пробовать это всё под виндой, то stud_io.inc вам ничем не поможет — он зависит не только от конкретного набора поддерживаемых операционкой системных вызовов, но и от конкретной конвенции вызовов, именно поэтому для Linux и FreeBSD используются совершенно разные версии. Версии для Windows нет и не будет.

admin аватар

Ещё про 64 бита

Нарылась любопытная ссылочка:

Что-то сдаётся мне, что 64-битные архитектуры идут далеко-далеко лесом, и так ещё лет на десять.

Вот еще

Хочу сказать

Хочу сказать огромное спасибо за Вашу книгу. К своему стыду должен признать, что несмотря на то, что я уже получил высшее образование по профильной специальности, некоторые вопросы, касающиеся низкоуровневого программирования, оставались для меня не до конца ясными. Ваша книга помогла решить эту проблему. Очень жаль, что у меня не было подобного курса в университете.

Инструкция loop

admin аватар

Спасибо!

Про enter/leave я знал, но что это к loop тоже относится, никак не мог предположить. Учту в следующем издании, если таковое когда-нибудь будет.

Скорость инструкций для разных процессоров

admin аватар

Спасибо!

Тоже весьма любопытная ссылочка, thanks!

Mac OS X

А можно ли, и как запустить его на Mac OS X?

admin аватар

Можно-то можно

Что можно — это я не сомневаюсь. Сам NASM представляет собой программу, написанную на ANSI C, так что с его компиляцией и запуском проблем не будет. Более того, вроде бы (если не ошибаюсь) там должны быть те же соглашения о системных вызовах, что и под FreeBSD, потому что в глубине души эта самая Mac OS X и есть FreeBSD :), так что можно будет даже запустить программы, написанные для NASM.

Но вот вопрос "как" здесь вы задаёте явно не по адресу. Я эту вашу макось видел только издали. За шашечки я денег не плачу принципиально, так что ни одного изделия фирмы Apple у меня в хозяйстве нет и никогда не будет (на всякий случай, я не Медведев, так что попытки подарить мне изделие от Apple чревато физическими повреждениями).

Спасибо

Спасибо большое за книгу и Ваш труд.

Выделение памяти

Добрый день, Андрей Викторович.
Могли бы Вы прояснить ситуацию, возникшую в процессе чтения Вашего пособия. Заключается она в следующем: если выделять инициализированную память директивой db (dw, dd), то в параметрах указываются значения через запятую, кот. будут храниться в бинарнике. Если же указать одно значение, например, x db 150, то получается, что выделяется одна ячейка памяти и в эту ячейку памяти заносится байт, принимающий значение 150 (10010110) и x указывает на эту ячейку (точнее ассемблер ассоциирует эту метку с адресом ячейки на этапе ассемблирования). А если бы использовалась директива выделения неинициализированной памяти x resb 150, то здесь выделилась бы память размером в 150 однобайтовых ячеек. Верно? Наставьте, пожалуйста, непонимающего на путь света =). Заранее спасибо.

admin аватар

Абсолютно верно

Вы совершенно правы, а в книге на стр. 50 опечатка. Спасибо за её выявление.

Это Вам

Огроммное

Огроммное спасибо за Вашу книгу!Надо быть действительно прожженным
профи,а также иметь дар Сухомлинского и Макаренко ,что бы в трех
слова объяснить ,что такое указатели.R&K и рядом не валялись.

admin аватар

"Уж сколько раз твердили миру"

Да пожалуйста, мне не жалко :-) А где это вы в моих книгах нашли объяснение указателей? Вроде бы учебника по чистому Си я ещё не написал, да и по Паскалю тоже.

Без розовых очков.

. И где, простите, Sun Microsystems и её SPARC.

SPARC, простите, вот здесь, в первой строчке TOP 500, в суперкомпьютере производительностью порядка десяти петафлоп. Но о задачах, для которых и такой производительности будет мало, Вы, наверное, даже и не слыхали.

admin аватар

Пять минут смеха продлевают жизнь на сутки

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

Насчёт спарков: ну опять вы со своими ракетами. Не волнуют меня суперкомпьютеры, и в особенности меня не волнует top500, представляющий собой бессмысленное мерянье пиписьками, исполняемое, что несколько обидно, за чужой счёт (иногда, замечу, и мой счёт, я ведь тоже налоги плачу). Попадание в верхние позиции top500 означает ровно одно: у кого-то нашлось больше лишних (при этом чужих) денег, чем у других. Вы вот мне скажите, где мне сейчас купить десктоп на спарке, чтобы его на стол поставить, взгромоздить на него тот самый Debian (NB: разумеется, я знаю, на скольких платформах он работает; я, знаете ли, с Linux работаю с 1994 года, а с 1997 — только с ним; больше того, можно было бы заметить, что я и в проекте Openwall участвую, и не только в нём) — так вот, взгромоздить и использовать в качестве рабочего инструмента заместо этого идиотского интела. Что до задач — NASA человека на Луну запустила, обладая совокупной вычислительной мощностью в разы меньшей, нежели мощность современного мобильника. Если программы писать через. ээ. короче, если их как попало писать, то вам любого суперкомпьютера окажется мало. А этот ваш первый в top500 жрёт почти 13 мегаватт, то есть он за месяц одного электричества съедает на сумму, приблизительно соответствующую стоимости строительства многоквартирного дома. Меня это обстоятельство интересует гораздо больше, чем те прожорливые модели, которые на нём обсчитываются.

Книжка Реймонда — она ничего, да (хотя утверждение о том, что pipe — механизм устаревший, поскольку есть сокеты, мне глаз резануло в своё время весьма и весьма). Пару раз я её уже читал, перечитывать в третий раз, пожалуй, всё-таки не стану, некогда. Кстати, вы могли бы и заметить, что в моей книжке 2006 года издания имеются ссылки и на Реймонда, и на Стивенса, и на Танненбаума (хотя его я не люблю, он вечно пишет не о том), и на Торвальдса. Но за язык никто не тянул: берём с полки Реймонда и читаем главу 20. Лучше с карандашиком. Хотя что-то мне сдаётся, что вы сами Реймонда если и открывали, то ни хрена там не увидели.

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

Да, так вот — мы с вами что-то в неравном положении. Вам про меня известно практически всё — можно легко простым поиском узнать моё имя, возраст, квалификацию, место работы, список публикаций, информацию об участии в разных проектах и всё прочее (если вы этого ещё не сделали, то это исключительно ваши проблемы), но вот мне про вас неизвестно вообще ничего, кроме имени. При этом вы тут пальцы гнёте, что я якобы о том не слышал, того не видел, этого не читал, того не делал, сего не пробовал (хотя я и видел, слышал, и делал, и читал, и пробовал) — а вы сами-то чем можете похвастаться? Основания для пальцовки есть? Или кроме пальцев ни хрена за душой? Пока что от ваших постов впечатление именно такое.

Спасибо за

Спасибо за совет. Учту на будущее.
У меня к Вам есть вопрос по поводу реализации алгоритма временной задержки (таймерной привязки) для процессоров семейства i32, но, скорее всего, это уже частный вопрос, не относящийся к теме. Если у Вас нет времени, или нет желания на всё это -- отпишитесь пожалуйста (на сайте , или на мой почтовый ящик: [email removed]). С уважением, Юрий.
Удачи!

Используйте возможности восстановления macOS для переустановки операционной системы Mac.

Запуск из раздела восстановления macOS

Сначала убедитесь, что ваш компьютер Mac подключен к Интернету. Затем определите, используете ли вы компьютер Mac с процессором Apple и следуйте соответствующим инструкциям:

Процессор Apple

Процессор Intel

Включите компьютер Mac и сразу же нажмите и удерживайте клавиши Command (⌘)-R, пока не увидите логотип Apple или другое изображение.

Если вам предложат выбрать пользователя, пароль которого вы знаете, выберите такого пользователя, нажмите «Далее» и введите пароль администратора.

Переустановка ОС macOS

Выберите «Переустановить macOS» в окне утилит в разделе восстановления macOS, а затем нажмите «Продолжить» и следуйте инструкциям на экране.

Параметры восстановления macOS с выбранным параметром «Переустановка macOS Monterey»

Следуйте этим рекомендациям во время установки:

  • Если установщик запрашивает разблокировку диска, введите пароль, используемый для входа в систему на компьютере Mac.
  • Если установщик не видит диск или сообщает о невозможности установки на данный компьютер или том, может потребоваться стереть диск.
  • Если установщик предлагает выбор между установкой на том «Macintosh HD» или «Macintosh HD - Data», выберите «Macintosh HD».
  • Дождитесь завершения установки, не переводя компьютер Mac в режим сна и не закрывая его крышку. Компьютер Mac может несколько раз перезагрузиться и выводить индикатор выполнения, а экран может оставаться пустым в течение нескольких минут.

После завершения установки компьютер Mac может перезагрузиться с переходом к ассистенту установки. В случае продажи, обмена с доплатой или передачи компьютера Mac нажмите Command-Q, чтобы выйти из ассистента, не завершая настройку. Затем нажмите «Выключить». Когда новый владелец запустит компьютер Mac, он сможет ввести свою информацию при настройке.

Другие варианты установки macOS

При установке macOS из раздела восстановления вы получите текущую версию последней установленной macOS за некоторыми исключениями:

  • Если при запуске компьютера Mac с процессором Intel были нажаты клавиши Shift-Option-Command-R, вам будет предложена macOS из комплекта поставки компьютера Mac или ближайшая доступная версия. Если при запуске нажаты клавиши Option-Command-R, в большинстве случаев вам будет предложена последняя версия macOS, совместимая с вашим компьютером Mac. В противном случае вам будет предложена версия macOS из комплекта поставки компьютера Mac или ближайшая доступная версия.
  • Если материнская плата Mac была только что заменена, вам может быть предложена только последняя версия macOS, совместимая с вашим компьютером Mac. Если вы только что полностью стерли загрузочный диск, вам может быть предложена только версия macOS из комплекта поставки компьютера Mac или ближайшая доступная версия.

Возможны и другие варианты установки macOS, совместимой с вашим компьютером Mac:


Начав работать в области науки о данных, машинном обучении или искусственном интеллекте, вы быстро понимаете, что Anaconda вам действительно нужна. Да, вы можете пользоваться Jupyter Notebooks, Spyder или другой классной программой, но, так или иначе, с Anaconda столкнуться все-таки придется.

Не так давно, переустанавливая программы на компьютере, я вспомнила, как трудно было установить Anaconda в первый раз. Сам по себе процесс установки прошел без труда! В официальном руководстве все разжевано буквально по кусочкам: повторяйте определенные шаги и радуйтесь результату!

А в конце вам предлагается подтвердить, что установка прошла успешно, и напечатать команду conda list ! Вот и все.

Н о как бы не так.


Здесь вы сами по себе.

Нет ничего более печального, чем не иметь возможности открыть программу, которая вам очень нужна.

Я работаю на MacOS (а конкретно — на Mojave) и активно пользуюсь терминалом. К тому же, у меня установлен Zsh. Потратив некоторое время на изучение вопроса, я нашла способ, как с помощью одной строки успешно установить Anaconda на Mac, даже пользуясь Zsh.

В чем же дело?

Как оказалось, сама установка выполнялась успешно, но возникал конфликт между Zsh и тем, как именно терминал «общался» с Anaconda. Причин могло быть великое множество, однако дело было в самом Zsh.


Когда я первый раз решила скачать Anaconda, то выбрала стандартную графическую установку программы для Mac. Сам по себе дистрибутив работал отлично, но он не в терминале.

Не желая сдаваться без боя, я удалила Anaconda и решила поставить ее заново через командную строку. Этот способ очень удобен, поскольку так вы можете вручную прописать, что ваш терминал будет взаимодействовать с Anaconda. В процессе установки выскочит подсказка: Do you wish the installer to initialize Anaconda3 by running conda init? («Хотите ли вы, чтобы установщик инициировал Anaconda3 через выполнение conda init?»).

Здесь так и напрашивается жирное yes .

Но это не помогло. Возможно, если вы не пользуетесь Zsh или Oh My Zsh, то Anaconda установится без проблем.

Но как же заставить ее работать, если вы изрядно пошаманили над терминалом?

Зайдите сюда. Прокрутите вниз до строки Anaconda 2019.03 for macOS Installer.

Вам нужно знать свою версию Python. Для этого пишем в терминале

Вы можете выбрать графический установщик (то есть установить Anaconda как любую другую программу), либо установку через командную строку (то есть открыть терминал и печатать команды копипастом или вручную).

Мы остановимся на установке через командную строку. Для начала скачивания нажмите на ссылку под нужной вам версией Python.


После завершения установки переходите в терминал.

Если у вас стоит Python 3.7, то выполните:

Внимание: если вы скачали Anaconda не в папку Downloads , то в командах нужно изменить путь к дистрибутиву.

Просмотрите лицензионное соглашение и нажмите Enter . В конце, после миллиона нажатий Enter , напечатайте yes , если принимаете лицензионное соглашение.

(Если вовремя не принять соглашение, то эта подсказка будет постоянно попадаться вам на глаза)


Если вас устраивает путь установки, то нажмите Enter . Вы можете изменить расположение или прервать установку нажатием CTRL-C . Запомните путь установки файлов! Он вам понадобится при возникновении ошибки.

А теперь выдохните и подождите. На экране будет происходить что-то непонятное. Затем вас спросят: Do you wish the installer to initialize Anaconda3 by running conda init? Конечно же, напишете yes .

«Спасибо за установку Anaconda!»

По завершении установки закройте окно терминала и откройте новое — так вступят в силу ваши изменения. Хотите убедиться, что все работает? Напечатайте conda list и посмотрите, что произойдет. Если все работает, то увидите что-то подобное:


Эта команда очень полезная. Она показывает, какие пакеты и версии установлены в вашей среде!

Если все работает, то поздравляю! Теперь можете пользоваться Anaconda, Jupyter Notebooks, Spyder и другими полезными штуками.


А еще вы можете увидеть вот такое:


И решение подобной проблемы на удивление простое.

***ПЕРЕЗАПУСТИТЕ ТЕРМИНАЛ. ***

(Об этом уже говорилось выше. И сами разработчики Anaconda признают, что наиболее частая проблема при установке — это именно нежелание обновить терминал)

Вам нужно выяснить, где расположена бинарная директория Anaconda, и какое у вас имя пользователя. Если вы внимательно читали подсказки при установке, то данная информация вам уже известна! Вам нужен тот самый путь установки, который мы обсуждали выше.

Если вы его не запомнили, то вполне возможно, что при стандартной установке программы нужной вам директорией в macOS окажется /Users/ ( /home/ для Linux или \Users\ для Windows 10).

Если не знаете имя пользователя, то выполните: echo $USER


***Обновите!!***

Для исправления ошибки я всегда советую изменять PATH .

Однако разработчики Anaconda рекомендуют этого не делать!

Вот их краткое объяснение, почему:

«Если в вашей системе уже присутствуют программы с теми же именами файлов, что и в Anaconda, то изменение PATH может привести к возникновению ошибок. conda init устанавливает функцию «shell» conda и убирает из PATH все остальное. Получается, что в PATH остается только conda . Затем при запуске по умолчанию активируется базовая среда. Данный эффект похож на добавление нового PATH с небольшими, но важными отличиями:

— при активации файлы Anaconda в PATH всегда помещаются на передний план. С одной стороны, это хорошо, ведь так вы избежите лишней путаницы. С другой стороны, это плохо, поскольку вы можете потерять другие файлы, что приведет к поломке системы. Активация — это не самый долговечный способ решения проблемы. Отключить автоматическую активацию базовой среды можно через настройку auto_activate_base в condarc .

— активация не просто изменяет PATH . Она получает все скрипты activate.dll , которые могут устанавливать дополнительные переменные среды. Эти переменные необходимы для различных пакетов (например, GDAL). И такие пакеты не заработают без активации.

Поэтому вместо того, чтобы менять PATH , лучше следовать инструкциям в конце установки и не запускать conda init :

Вы увидите 2 команды:

1. eval “$(/home/msarahan/mc3_dummy/bin/conda shell.bash hook)”

Обратите внимание, что в шаге 1 имя оболочки было изменено с YOUR_SHELL_NAME на bash . Не забудьте задать правильное имя для своей оболочки».

Иначе говоря, изменение PATH может привести к серьезным последствиям. Поэтому лучше ограничиться активацией, ведь она не является чем-то постоянным и, в отличие от изменения PATH , разрешает выполнение других пакетов.

Таким образом, в конце установки вместо запуска первоначального решения:

Вам следует выполнять

eval “$(/home/msarahan/mc3_dummy/bin/conda shell.bash hook)”
conda init

(Но обязательно измените директории расположения и оболочки!)

***Конец обновления***

Первоначальное решение:

Чтобы все заработало, вам нужно выполнить

(Не забудьте изменить myname на свое имя пользователя и при необходимости подкорректируйте путь к директории. Если вы посмотрите на строку выше, то увидите, что в процессе установки /Users/myname/anaconda3 заменилась на /Users/anneb/anaconda3 . Остальное осталось неизменным).

Если у вас не Anaconda3, а Anaconda2, то выполните

при необходимости измените расположение файла и поменяйте myname .

А теперь попробуйте conda list !


У вас получилось.

Вы успешно установили Anaconda и теперь можете запустить ее из командной строки!

Читайте также: