В этой части (первая тут) мы поговорим о структуре Go-программы с использованием ассемблера, о хитростях макросов. Будем писать дальше нашу ассемблерную функцию.
В этой части (первая тут) мы поговорим о структуре Go-программы с использованием ассемблера, о хитростях макросов. Будем писать дальше нашу ассемблерную функцию.
В этой статье я постараюсь дать максимально простое введение в Го-ассемблер — зачем и когда он может понадобиться, а также мы начнём делать функцию умножения для 256-битных чисел, а в следующей части её закончим.
Здравствуй!
Пришло время для моей новой статьи по Linux и в этот раз довольно необычной. Я буду разбирать способы “подружить” x64 архитектуру с компьютером на ARM64 (AArch64) архитектуре.
Вообще, тут стоит сделать небольшое отступление и рассказать про развитие компьютеров в общем.
Начну я далеко не с начала, а с момента зарождения настольных персональных компьютеров, так как до этого компьютеры были роскошью и обычный человек не мог у себя дома иметь огромный ЭВМ на условном UNIX.
Я не собираюсь в данном историческом экскурсе рассказывать про Apple II или Commodore Amiga, или ZX Spectrum 64/128K. Смысла имеет довольно мало.
Центральный процессор (CPU, Central Processing Unit) — это основной компонент устройств, который выполняет все вычисления и логические операции, необходимые для работы программ.
Здесь я постараюсь рассказать про строение и работу процессора на примере x86–64 архитектуры.
Когда-то это всё я конспектировал для себя в дружелюбном для новичка виде, чтобы мне самому было проще вовзвращаться к этой информации время от времени.
Я решил поделиться своими заметками, так как возможно кому-то это может показаться полезным. На детальность информации не претендую, но не против конструктивной критики.
Сегодня мы будем анализировать бинарники на пару с CPU профилями, чтобы создать на их основе расширенные профили исполнения. Эти дополненные профили мы сможем использовать для оценки времени, которое программа тратит на проверки выхода за границу массивов и слайсов.

You've run into a really hairy area of asm code.
My first suggestion is not try to call from assembler into Go. — Ian Lance Taylor
До тех пор, пока ваш ассемблерный код делает что-то простое, всё выглядит неплохо.
Как только у вас возникает задача вызвать из ассемблерного кода Go функцию, один из первых советов, который вам дадут: не делайте так.
Но что если вам это очень-очень нужно? В таком случае, прошу под кат.

— А куда поставить этот пыльный ящик? — спросил я друга, разбирая хлам в покидаемом офисе.
— Поставь в самое дальнее место, — сказал он, — это хранилище давно отживших свой срок деталей. Для сегодняшних наших задач там ничего нет.
Я заглянул внутрь. Из ящика, среди заросших паутиной проводов на меня глядела плата внушительного размера с двумя огромными медными радиаторами, ощетинившись слотами для оперативной памяти. Больше из-за паутины ничего видно не было.
Это явно плата для сервера, двухпроцессорная, с 8 слотами оперативки.
Мне стало интересно, что это за материнка и что с ней произошло, целая ли она? Пусть в качестве современного сервера она уже не потянет. А что если…? Мне хотелось узнать, насколько она подойдет для современных программ и повседневных нужд обычного пользователя.

Приглашаю к прочтению этой статьи таких же, как я, энтузиастов, которым интересно покопаться в различном «железе», сравнить функциональность и быстродействие давно ушедших из обращения компьютерных систем, вернуть что-то к жизни, уже, возможно, из полного небытия.
Читать полностью »
Прямо сейчас на Тайване проходит одна из главных IT-выставок планеты, а для компьютерной индустрии – и вовсе самая главная. Называется она Computex, и ее появление датируется 1981 годом. Постепенно из выставки достижений тайваньского хозяйства она превратилась в международную площадку, и хотя в последнее время роль Тайваня и большого Китая снова усилилась, большинство производителей ПК, компонентов и сетевого оборудования разворачивают стенды и делают анонсы новых продуктов. Вот и позавчера, когда в Москве только-только начало рассветать, в самом центре Тайбея, недалеко от знаменитой башни Taipei 101 высотой 509 метр, AMD рассказала о шестом поколении APU A-серии с кодовым именем Carrizo. Укладываясь в TDP 15 Ватт, они существенно превосходят предшественников и по производительности, и по времени работы готовых систем.
Всем привет!
В предыдущем посте я писал о неттопе LXBOX на базе Linux Mint, который мы довели до релиза и запустили в продажу в феврале этого года. Спасибо всем за комментарии! Некоторым подача материала показалась слишком вычурной, поэтому напишу здесь структурированно о том, что это за зверюга, кто ее породил и с чем ее кушают. И немного о скидках для Хабровчан в конце.

Проект изначально был задуман берлинской фирмой GSN, мы (ГК ТОНК) подключились к нему на одном из ранних этапов. Читать полностью »

На пятничном семинаре учебного проекта лаборатории МФТИ-Интел один из студентов задал мне примерно такой вопрос: а почему 64-битный вариант архитектуры процессоров Intel называется x64, а 32-битный — x86? Я начал объяснять, что не всё так просто. Захотелось нарисовать более полную картину. Ведь на самом деле это не x64, и даже не x86.
Читать полностью »