Вообще я когда пишу код я расчитываю получить именно то что написал, а если написал хрени, то получить по рукам.
В данном конкретном случае поведение sjasm в рамки здравого смысла не укладывается (тем более что в той древней версии на которой я до того кодерасил такого поведения по умолчанию не было). Во первых если я захочу каких-то плюшек то я их явным образом включу. До той поры пока я чего-то явно не разрешил мне дополнительного сервиса никакого не нужно. Во вторых я готов еще понять когда какое-нть ld hl,de разворачивается в пару восьмибитных пересылок. Ладно, на байт длиннее программа стала, адреса меток оно пересчитает, для того ассемблер и придумали. Но вот когда оно без спросу в стек лезет это в чистом виде самодеятельность уже. В третьих такое поведение отключить 1) нельзя и 2) в доке не написано каким именно образом в sjasm накостылен тот или иной встроенный макрос разворачивающий одну мнемонику в несколько, сиди и смотри в листинг называется. И не факт кстати что завтра там в этих макросах чего-то не поменяется на этот счет. И сиди потом, ищи из-за чего код не работает.
Сижу как дурак теперь и в листинг после каждой компиляции смотрю. А то вдруг он мне rlc a на rlca где-то поменяет, потому-что оно мол на байт короче и на четыре (кажись) такта быстрее. Или jp на jr заменит, мол зачем тебе jp, тут близко же...





там много интересного написано.
Ответить с цитированием