Вообще я когда пишу код я расчитываю получить именно то что написал, а если написал хрени, то получить по рукам.
В данном конкретном случае поведение sjasm в рамки здравого смысла не укладывается (тем более что в той древней версии на которой я до того кодерасил такого поведения по умолчанию не было). Во первых если я захочу каких-то плюшек то я их явным образом включу. До той поры пока я чего-то явно не разрешил мне дополнительного сервиса никакого не нужно. Во вторых я готов еще понять когда какое-нть ld hl,de разворачивается в пару восьмибитных пересылок. Ладно, на байт длиннее программа стала, адреса меток оно пересчитает, для того ассемблер и придумали. Но вот когда оно без спросу в стек лезет это в чистом виде самодеятельность уже. В третьих такое поведение отключить 1) нельзя и 2) в доке не написано каким именно образом в sjasm накостылен тот или иной встроенный макрос разворачивающий одну мнемонику в несколько, сиди и смотри в листинг называется. И не факт кстати что завтра там в этих макросах чего-то не поменяется на этот счет. И сиди потом, ищи из-за чего код не работает.
Сижу как дурак теперь и в листинг после каждой компиляции смотрю. А то вдруг он мне rlc a на rlca где-то поменяет, потому-что оно мол на байт короче и на четыре (кажись) такта быстрее. Или jp на jr заменит, мол зачем тебе jp, тут близко же...
Последний раз редактировалось ram_scan; 20.02.2014 в 15:27.
Ищщо раз. Я прочел доку. В доке нигде не написано что внутренний макрос будет трогать стек. Более того вообще не написано во что эта порнография разворачивается.
В спортлото я жаловаться не буду. Я пожалуюсь разработчику. Если разработчик внимать не будет, пофикшу для себя сам.
Для компилятора подобное поведение считаю недопустимым.
если не написано, на что можно рассчитывать? и вообще, расскажите, как вы еще сделаете ld hl,ix не попортив ничего больше?
и да, читаем:
продолжайте катить бочку... про стек же не написано, да?Of course the Z80 is only an 8 bit cpu, but sometimes ld hl,de would be nice. SjASMPlus now 'fakes' some instructions like that. This improves the readability of the source, but it might not be the fastest way to get the result. Also possibly some 'new' load instructions do affect the flags in ways you wouldn't expect.
это то же самое) его никто уже не поддерживает, место вакантно.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Я, кстати, согласен с этой мыслью. Но я всё равно не понимаю жалобы на существующие макросы ассемблера. Человек, пишущий на ассемблере, берёт на себя ответственность за каждую деталь кода. Я не понимаю, как можно писать ассемблерный код, не помня, что реально может (и не может) делать процессор, отказываясь вслух прочесть документацию и продолжая использовать встроенные макросы.
"introspec" читается как "интроспек". некоторые читают как "интроспец", но я никакой не спец. я спек.
"introspec" читается как "интроспек". некоторые читают как "интроспец", но я никакой не спец. я спек.
Имеющаяся проблема удобства использования инструмента квалифицируется как "так тебе и надо". Разве это правильно?
Имхо, пути решения проблемы два
1) возможность отключения всех расширений
2) не мимикрировать расширения под стандартные команды (шибко умному компилятору пофиг, забыл ли ты ассемблер или просто опечатался).
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)