Стоит изучить хоть какой-нибудь ассемблер, чтобы вообще представлять, что там может быть. Потом, для конкретного процессора и конкретной архитектуры - прочитать список инструкций, понять, что там реализуется легко, а что сложно; прочитать про структуру памяти. Тогда будет понятно, какими конструкциями в языках высокого уровня (например, в С) пользоваться стоит, а каких следует избегать. Изучать ассемблер (в смысле зубрить инструкции), наверное, не обязательно.