Про транзакционную память и её «обещания об избавлении» я также хочу как-нибудь написать статью для Хабра. Пока что есть серия постов на IDZ про её аппаратные воплощения: 1, 2, 3, 4.
Про DJNZ и LOOP. Логика у них одинаковая: уменьшить регистр на единицу и, если он не ноль, прыгнуть по смещению, Т.е. это всё-таки «условие плюс goto». Это не привносит структуры в программу на машинном коде. Задача слежения за ней всё ещё остаётся на плечах программиста. Я всё ещё могу написать так:
label1:
…
label2:
loop label1:
…
loop label2:
Т.е. «циклы» будут пересекаться. Никакой структуры.
Про REP*. Так как префиксы позволяют зациклить только единственную инструкцию, то они не создают свойства композиционности (возможность цикла в цикле). Вообще строковые команды — это некий архаизм, а на REP префиксы ныне активно навешивают новые смыслы (например, для HLE они превратились в XACQUIRE и XRELEASE).
Мне кажется, что, если бы язык Brainfuck имел аппаратную реализацию, то инструкции, соответствующие его операторам [ и ], как раз служили бы задаче обеспечения циклов со структурой на машинном уровне.
Я хоть с экосистемой Apple по жизни почти не сталкиваюсь, тоже часто жалею о том, что их GCD не взлетел кроссплатформенно. С другой стороны, Apple протолкнуло OpenCL, за что им спасибо.
Довольно давно наткнулся на сайт ss64.com/nt/, где перечислены команды всякие полезности окружения CMD.EXE. Когда всплывает необходимость, иду за подсказкой туда.
Насколько я понял, дисс. советам пока что в рекомендательном порядке предлагается проверять на плагиат, даже какой-то сайт для этого используют. Было очень забавно смотреть на отчёт по собственной работе — все определения, взятые из Википедии, всплыли :-) Было несколько ложных срабатываний, с первого взгляда необъяснимых. А ещё по каким-то причинам совсем не было ссылок на мои же материалы, которые в Интернете были выложены и которые я наверняка должен был переиспользовать.
Большое спасибо за статью! В ней собраны предостережения обо всех граблях, по которым я прошёлся сам в процессе написания диссера и его защиты. Вы написали очень полезную шпаргалку для подрастающего поколения, которой я непременно воспользуюсь (если не забуду, что она у меня в избранном лежит...).
Интересный концепт. Однако я сам что-то не соображу — правильно ли поведёт себя Ваш код, если два процесса будет одновременно удалять два линка на один и тот же инод. Конкретно вот эта строчка:
if (dentry->d_inode->i_nlink == 1) {
...
}
Вот пример. В начале инод имеет i_nlink == 2. Затем два процесса подходят к этой строке, видят, что ещё один линк останется, и спокойно продолжают удалять каждый свою ссылку, не затруднившись зайти в move_to_trash(). В результате никто не создаст копию в корзине.
Или там подразумевается какой-то семафор на уровне выше, ещё до вызова fstrash_unlink()?
И точно. Приятно, что при этом поддерживаются целевые архитектуры Linux IA-32 и EM64T. И, собственно, это почти всё, что поддерживается, что печально. Не хватает других архитектур и ОС.
Надо будет попробовать более свежую версию GDB для отладки своих приложений. В теории всё просто, но хочется посмотреть на скорость работы, а также на накладные расходы по памяти.
По-хорошему мне надо бы вообще использовать русское слово «повторяемость». Проблема в том, что устоявшегося отечественного термина я не знаю, поэтому и в статье использую то слово, которое применяю ежедневно, а оно — калька с англ. deterministic.
Network Working Group S. Bellovin
Request for Comments: 3514 AT&T Labs Research
Category: Informational 1 April 2003
The Security Flag in the IPv4 Header
Я правильно понял, что в процессе портирования были исключены оптимизированные варианты некоторых функций (вместе с файлами, их содержащими), и вместо них проект подхватил их generic-реализации, написанные на C++ и потому компилирующиеся как на ARM, так и на IA-32?
В таком случае насколько, по вашему мнению, оправдано в дальнейшем написание аналогично соптимизированных (например, c задействованием асма/интринсиков SSE/AVX) специализаций этих функций для IA-32? Ожидаете ли вы дополнительного прироста в скорости работы движка от подобных усилий?
ИМХО, Eclipse создаёт довольно приятную и функциональную среду разработки, привычную для многих. Вот только немного тяжеловесно получается.
Конкретно в случае Simics я всегда использую консольный режим, когда никакого Eclipse не запускается. Сидишь себе в консоли, набираешь команды, всё как обычно.
Forth — это вообще для меня яркий просвет во тьме недоразумений машинных языков. Элегантный и мощный.
esa21.kennesaw.edu/activities/nukeenergy/nuke.htm
habrahabr.ru/company/intel/blog/206030/#comment_7532679
Т.е. дело не в автоматическом счёте операций, а «скобках», создающих структуру.
label1:
…
label2:
loop label1:
…
loop label2:
Т.е. «циклы» будут пересекаться. Никакой структуры.
Про REP*. Так как префиксы позволяют зациклить только единственную инструкцию, то они не создают свойства композиционности (возможность цикла в цикле). Вообще строковые команды — это некий архаизм, а на REP префиксы ныне активно навешивают новые смыслы (например, для HLE они превратились в XACQUIRE и XRELEASE).
Мне кажется, что, если бы язык Brainfuck имел аппаратную реализацию, то инструкции, соответствующие его операторам [ и ], как раз служили бы задаче обеспечения циклов со структурой на машинном уровне.
Насколько я понял, дисс. советам пока что в рекомендательном порядке предлагается проверять на плагиат, даже какой-то сайт для этого используют. Было очень забавно смотреть на отчёт по собственной работе — все определения, взятые из Википедии, всплыли :-) Было несколько ложных срабатываний, с первого взгляда необъяснимых. А ещё по каким-то причинам совсем не было ссылок на мои же материалы, которые в Интернете были выложены и которые я наверняка должен был переиспользовать.
if (dentry->d_inode->i_nlink == 1) { ... }Вот пример. В начале инод имеет i_nlink == 2. Затем два процесса подходят к этой строке, видят, что ещё один линк останется, и спокойно продолжают удалять каждый свою ссылку, не затруднившись зайти в move_to_trash(). В результате никто не создаст копию в корзине.
Или там подразумевается какой-то семафор на уровне выше, ещё до вызова fstrash_unlink()?
Надо будет попробовать более свежую версию GDB для отладки своих приложений. В теории всё просто, но хочется посмотреть на скорость работы, а также на накладные расходы по памяти.
Network Working Group S. Bellovin Request for Comments: 3514 AT&T Labs Research Category: Informational 1 April 2003 The Security Flag in the IPv4 Headersample/test_ARM_NEON_...В таком случае насколько, по вашему мнению, оправдано в дальнейшем написание аналогично соптимизированных (например, c задействованием асма/интринсиков SSE/AVX) специализаций этих функций для IA-32? Ожидаете ли вы дополнительного прироста в скорости работы движка от подобных усилий?
Конкретно в случае Simics я всегда использую консольный режим, когда никакого Eclipse не запускается. Сидишь себе в консоли, набираешь команды, всё как обычно.