| Разработка и ромхакинг > Ромхакинг и программирование |
| [NES] Мой NES ASM Компилятор |
| (1/3) > >> |
| Ximial:
Короче, я создал, собственный NES ASM компилятор. В теме: https://www.emu-land.net/forum/index.php/topic,78955.0.html оно уже, освещалось. Я подумал, бы о том, какие были бы пожелания. Может он, не понимает каких нибудь недокументированных команд? Которые, не помешало бы ему знать. К примеру существует, стандартный NES ASM, на котором многие, уже и пишут. Но так ли хорош, этот кашерный асм? И не связывает ли он руки проггеру, в самых неожиданных местах? Запрещая что либо делать? Даже слишком элементарное? И ещё вопрос, к знающим людям. Как в макро нес асемблере, писалась бы, как бы вот такая по смыслу команда? .DB $DC Тотько длинная. Со смыслом: .DB "DE 4A 56F 08A" Т.е. команда, которая, бы просто, втискивала в код, строку из любых байт? Добавлено позже: Я имею, ввиду эту самую команду, правильно оформленную, по синтаксису. И уже буквально, следующим сообщением, ассемблер, будет её знать. |
| Griever:
--- Цитата: Ximial от 08 Октябрь 2017, 04:42:59 ---Но так ли хорош, этот кашерный асм? --- Конец цитаты --- Да. --- Цитата: Ximial от 08 Октябрь 2017, 04:42:59 ---Как в макро нес асемблере, писалась бы, как бы вот такая по смыслу команда? --- Конец цитаты --- Скачайте asm6.zip и в readme изучите директиву HEX. |
| Segaman:
запили поддержку структур (как в Си), и цены компилю не будет :cool: Там логика в принцыпе элементарна |
| CaH4e3:
поддержка блекджека, шлюх и многократно вложенных макросов - и я перейду на этот компилятор.. ну еще релатив-локал ссылки, описатели процедур, в пределах которых можно делать локальные ссылки, использование макро структур в качестве токенов в любом месте кода, а не только как отдельный элемент (не только как строку текста, а и как элемент массива в числе прочих обычных элементов)... поддержка релатив орг директив, и форснутых орг директив, которые бы вписывали код по заданному адресу в выходном файле, поддержку списков символов для каждого файла, чтобы не приходилось асмить кучу сорсов на каждый отдельный бинарник... поддержку банков и мапперов денди лол а еще к этому символьный отладчик, который сам сопоставляет место в сорсе со смещением в откомпилированном файле и может сделать там бряку.... |
| Ximial:
--- Цитата: CaH4e3 от 09 Октябрь 2017, 01:23:21 ---поддержка блекджека, шлюх и многократно вложенных макросов - и я перейду на этот компилятор.. ну еще релатив-локал ссылки, описатели процедур, в пределах которых можно делать локальные ссылки, использование макро структур в качестве токенов в любом месте кода, а не только как отдельный элемент (не только как строку текста, а и как элемент массива в числе прочих обычных элементов)... поддержка релатив орг директив, и форснутых орг директив, которые бы вписывали код по заданному адресу в выходном файле, поддержку списков символов для каждого файла, чтобы не приходилось асмить кучу сорсов на каждый отдельный бинарник... поддержку банков и мапперов денди лол а еще к этому символьный отладчик, который сам сопоставляет место в сорсе со смещением в откомпилированном файле и может сделать там бряку.... --- Конец цитаты --- Давайте, я на этот вопрос, отвечу неожиданно (для проггера) просто. Надо просто взять, чужой уже готовый компилятор, какого нибудь, не имеющего отношения к реальному рейтингу C++. И перевести его выходной exe асм - на nes asm. Получилась бы не ваша - не наша. --- Цитата: Segaman от 08 Октябрь 2017, 22:30:26 ---запили поддержку структур (как в Си), и цены компилю не будет Там логика в принцыпе элементарна --- Конец цитаты --- Я о таком, подобном естественно думал. Типа, чтобы собственные макросы можно было бы писать, внутри самой программы. Но сейчас, меня интересовали бы вопросы, основопологающие, реальные. Я как реальный программист, рассуждал бы о реальном. Я бы спрашивал только из срвнения одного Ассемблера с другим асемблером. --- Цитата: Griever от 08 Октябрь 2017, 19:19:35 ---Скачайте asm6.zip и в readme изучите директиву HEX --- Конец цитаты --- А нельзя, её просто назвать как команду. Это было бы нужно, для совместимостей исходников под разные асмы. Добавлено позже: Следовало бы, заметить вообще, для начала, элементарное. Что я и заметил сам. Настоящий nes ром, может быть только фиксированных размеров. Не зависимо от длинны програмного кода, нес файл, может быть не менее определённого, минимального числа килобайт. Я естественно, собираюсь приближать проект до состояния этих возможностей, не зависимо от знаний реальной архитектуры. А может ли асм asm6.zip, при набирании, в нём каких нибудь, всего трёх команд, в итоге создать функционабельный ром? Без слишком большого пристрастия к знаниям архитектуры? |
| Ximial:
Добавил свою утилиту в виде jpg-zip-WinRar архива. Программу корректор кода из под NES-дизассемблера. Чистит выходящий из него код от мусора для дальнейшего компилирования его на представленном мною ассемблере. Архив с программой находится в картинке. Добавлено позже: Jpg файл откроется как архив программой WinRar. |
| Dario:
--- Цитата ---В результате получится фрагмент компилированного кода, с именем output.cod. --- Конец цитаты --- Лучше сделать директиву для задания имени выходного файла. Например, в кроссассемблере SjAsm+ для ZX Spectrum используется SAVEBIN "output.cod", EntryPoint, CodeSize. Необязательно, но хорошо было бы в дополнение к raw коду генерить (при указании соотв. ключа в командной строке) и ром, который можно запустить в эмуле, хотя бы простой без маппера. Настройки вроде горизонтального/вертикального отражения, размеров CHR и PRG и т.д. задавать директивами в начале файла, а в конце - директивы с указанием адресов (меток) обработчиков RESET, NMI и IRQ. Данные для CHR брать из графического файла, BMP или PNG. Тогда можно было бы легко собрать HelloWorld, ну а потом переходить к чему-нибудь посложнее. Относительно архитектуры - я изучаю здесь: http://dendy.migera.ru/nes/g00.html и https://wiki.nesdev.com/ Пытаюсь сделать компилятор Бейсика для NES, но пока без особых результатов. |
| Segaman:
Ximial, почему не 7z? вирусню прячешь в картинке? >:( |
| SeregaZ:
вот тоже интересно :) хотя вирус тотал ток 2 ноунейма дал срабатывания. |
| Ximial:
Оно написано на Delphi 7. А у него любой exe с помощью Noda да иной раз и Avasta как будто вирусный. Добавлено позже: Да и много ли толку в директивах имени выходного файла когда мне понятно что исходный дебагер-дизассемблер не знаком с мапперами, не отличает графику и музыку рома от программного кода. Если этим дизасмом и пользоваться то нужно делать начало дезассемблирования в грамотном месте. Для чего нужно обрезать исходный нес от начала файла. Добавлено позже: SeregaZ: Скачай редактор уровней для игры Litl Mermid. Антивирус будет спокоин. Это сдесь недалеко в этом же разделе форума. |
| SeregaZ:
дело не в этом, а в том что приложение в посте в виде изображения - что несколько настраивает на пессимистичный лад. по правилам хорошего тона приложение следует выкладывать в какомнить zip архиве. |
| Ximial:
Мне это уже в каждой теме надо писать. Что отправка со смартфона не поддерживает файлы любого типа а только картинки. И поэтому к картинке приклеен архив. И в итоге в таком виде отправление проходит. |
| Guyver(X.B.M.):
Это полностью твоя проблема. Не получается выложить с телефона - сходи к другу/соседу/на почту и выложи файл с компьютера. Или попроси чтобы кто-то перевыложил твой файл, а потом измени своё сообщение с новой ссылкой. Что за гнилые отмазки? :neznayu: (или ты собрался приучать форумчан к этим #$%*$%#ым картинкоархивам?) |
| Ximial:
Не знаю... Я не волшебство. Как это целиком, полностью и только?... |
| Ximial:
Добавил пару новых версий. Добавлено позже: Во второй версии, ничего нового кроме возможности писать комментарий после знаков *** между строк кода. В третьей, я подозреваю ошибки но они связанны с включением новых команд. Пока исправлять некогда. Как меня и просили сделал возможность подключать к проекту битмап. Но я сделал чтобы подключалась только пикселная его информация. Директиву для создания обособленного имени выходного файла также сделал. Что касается синтаксиса добавления строки байт, типа: .DB "45 FE"... Общем заморачиваться не стал и сделал ещё в своём синтаксисе, вот так: .DB# 57 68; Кажется у третьей версии, как я заподозрил может быть что-то не так с новой командой "Block" которая должна генерировать строку энного размера из ff байтов. Добавлено позже: Так же сделал компилятору возможность работать в режиме патчтера. Т.е. проект компилятора не создаст свой файл, а пропатчтит своим проектом какой нибудь nes-файл. Добавлено позже: Что касается дебагинга уже существующего дизассемблера Картэза Ральфа. Я посмотрел. И от начала Nes-файла он дэбагит правильно хотя и вместе с заголовком но смещения кода в сторону неправильной трансляции - нет. Во всяком случае при дэбагинге с самого начала файла. А в случае с фрагментами асма в середине - я так и не знаю. Набросал пять команд своего дэбагера, а дальше делать не стал. Стало лень. |
| Yoti:
Так и не научился нормально файлы выкладывать? |
| Ximial:
Я пока свои сайты не научился делать увожаемый... |
| Ximial:
Исправил ошибки в двух командах. Остальные ошибки пока не выяснил. Долго это. Добавлено позже: Пока исправил ошибку с новой командой ".DB#" и "Block". |
| Ximial:
Опять нашёл ошибки: SBC #$x- транслируется с ошибкой LDX $x,Y - транслируется с ошибкой ADC ($x,X) - вообще отсутствовала AND $xx,Y - присутствовала но не работала Когда смогу обновлю загрузку. Добавлено позже: И вообще получается непонятная картина. Я создаю новый РОМ, идеально пустой, с правильным заголовком, сразу после заголовка пишу несколько команд (размер Рома остаётся прежним) и на fuse дебагере - этого кода вообще будто нет. На остальных эмуляторах ром идёт как нормальный. В других случаях на дебагере вообще не тот код который я писал а какой-то абстрактный. |
| CaH4e3:
у меня стойкое ощущение, что этот человек сумасшедший. fuse вроде всегда был мумулятором спектрума лол... |
| Навигация |
| Главная страница сообщений |
| Следующая страница |