Существует много голосов за Завершенный Код Steve McConnell, но что относительно его Практические советы для освоения системы Проекта программного обеспечения книга? Я думаю, что они оба требуются, читая, но по разным причинам.
Мой единственный вопрос: в чем разница? Насколько я могу судить, оба набора инструкций делают одно и то же.
Да, вы правы. Единственное различие, которое может появиться, - это когда псевдо-инструкция транслируется более чем в одну «настоящую» инструкцию.
Могут ли псевдо-инструкции существовать только потому, что их легче читать?
Опять же, да. Вот , почему они существуют. Они создают иллюзию более выразительного набора инструкций. Цитата Организация и дизайн компьютера / Patterson & Hennessy :
... ассемблер также может обрабатывать общие варианты инструкций машинного языка, как если бы они были инструкциями сами по себе. Аппаратному обеспечению не нужно выполнять эти инструкции; однако их появление на языке сборки упрощает перевод и программирование. ...
Учитывая ваш пример, более "ясно" сказать:
l.s $f2, 24(t1) # Load Single contained in 24(t1) to $f2
, чем
lwc1 $f2, 24(t1) # Load Word into Coprocessor 1 from 24(t1) to $f2
, и вы можете лучше понять:
move $7, $18 # move contents of $18 to $7
, чем
add $7, $18, $0
. Для меня просто помогает мнемоника, чтобы улучшить читаемость кода.
однако их появление на языке сборки упрощает перевод и программирование. ...Учитывая ваш пример, более "ясно" сказать:
l.s $f2, 24(t1) # Load Single contained in 24(t1) to $f2
, чем
lwc1 $f2, 24(t1) # Load Word into Coprocessor 1 from 24(t1) to $f2
, а также вы можете лучше понять:
move $7, $18 # move contents of $18 to $7
, чем
add $7, $18, $0
Для меня просто помогает мнемоника, чтобы улучшить читаемость кода.
однако их появление на языке сборки упрощает перевод и программирование. ...Учитывая ваш пример, более "ясно" сказать:
l.s $f2, 24(t1) # Load Single contained in 24(t1) to $f2
, чем
lwc1 $f2, 24(t1) # Load Word into Coprocessor 1 from 24(t1) to $f2
, и вы можете лучше понять:
move $7, $18 # move contents of $18 to $7
, чем
add $7, $18, $0
. Для меня просто помогает мнемоника, чтобы улучшить читаемость кода.
Джон, проблема в том, что ваш запрос построен так, что он выбирает из производной таблицы. Производная таблица не может получить выгоду от ваших индексов. Попробуйте обновить свой запрос следующим образом:
SELECT
Parts.*,
Image.type, Image.width, Image.height,
Location_State.name AS state,
Location_Region.name AS region,
Promotion.start_date AS promotion_start_date,
Promotion.end_date AS promotion_end_date
FROM Parts
LEFT JOIN Image ON Parts.image_id = Image.id
LEFT JOIN Location_State ON Parts.state_id = Location_State.id
LEFT JOIN Location_Region ON Parts.state_id = Location_Region.id
LEFT JOIN Promotion ON Parts.promotion_id = Promotion.id
INNER JOIN Parts_Category ON (Parts_Category.category_id = 40 OR Parts_Category.main_category_id = 40)
WHERE Parts.status = 'A'
GROUP BY Parts.id
ORDER BY Parts.level DESC, Parts.warehouse DESC, Parts.updated DESC LIMIT 0, 15
Обратите внимание: если вам не нужны LEFT JOIN для таблиц Location_State, Location_Region, Promotion, тогда используйте вместо этого INNER JOIN. Скорее всего, он будет работать лучше.
LWC1 (Сопроцессор 1 загрузки слова, показанный на фиг. 4) и
LDC1 (загрузка двойного слова сопроцессора 1, показанного на фиг. 8).
LWC1 загружает 32-битное слово из подсистемы памяти в общие регистры FPC.
LDC1 загружает 64-битное двойное слово из подсистемы памяти в общие регистры FPC.
что подтверждает это.
(кстати: не пытайтесь найти цифры, указанные здесь, если вы
имеют доступ к сайту).