Не удается получить .define для работы с sdasz80 (ассемблер sdcc) - PullRequest
0 голосов
/ 04 декабря 2018

Ассемблер SDCC является производным от ASxxxx, где руководство описывает команду .define здесь: http://shop -pdp.net / ashtml / asxs02.htm # define

Поскольку это деривация,Возможно, не все работает одинаково, но поскольку аргумент командной строки help говорит о .define ("-b Показать подстановки .define в листинге"), я бы предположил, что они есть.

Однако, когда я делаю:

.define ay /-1/

Я получаю сообщение об ошибке:

g.s:1: Error: <o> .org in REL area or directive / mnemonic error

Другие формы, которые я пробовал включать:

.define ay ^/-1/
.define ay "-1"
.define kword /foo/

Все эти результаты приводят к одной и той же ошибке.Если я пытаюсь

.define

, ошибка становится такой:

g.s:1: Error: <q> missing or improper operators, terminators, or delimiters

Я получаю ту же ошибку с .blarg, поэтому возможно, что ключевое слово было удалено (почему, хотя?)

Я что-то не так делаю или sdasz80 просто сломался?

Ответы [ 3 ]

0 голосов
/ 08 марта 2019

Примите также во внимание, что sdasz80, поставляемый вместе с SDCC, является старой версией ASxxxx.Фактически, документация, которую они поставляют со своим sdasz80, относится к более новой версии ASxxxx, и некоторые функции фактически отсутствуют в поставляемой версии.

Если вы хотите эти функции и более новые, вы можете скачать обновленную версиюASxxxx с его сайта.Там было много новых версий, включая десятки новых интересных функций.Последняя версия выпущена в январе 2019 года: http://shop -pdp.net / ashtml / asxxxx.php

0 голосов
/ 03 июня 2019

Для многих целей вы можете использовать переменные.Это будет работать на sdasz80 (версия SDCC)

SOME_IO_ADDRESS = 0x32
[...]
LD A, #0xAA
OUT (#SOME_IO_ADDRESS), A
0 голосов
/ 04 декабря 2018

Ну дерьмо, кажется, это функция, которую они удалили по какой-то причине.Поиск в github зеркале источников SDCC (источники sdas здесь: https://github.com/svn2github/sdcc/tree/master/sdcc/sdas) SDCC asxxxx.h (последний раз редактировалось 6 лет назад) имеет этот блок:

/*
 *      The def structure is used by the .define assembler
 *      directive to define a substitution string for a
 *      single word.  The def structure contains the
 *      string being defined, the string to substitute
 *      for the defined string, and a link to the next
 *      def structure.  The defined string is a sequence
 *      of characters not containing any white space
 *      (i.e. NO SPACEs or TABs).  The substitution string
 *      may contain SPACES and/or TABs.
 */
struct def
{
        struct def      *d_dp;          /* link to next define */
        char            *d_id;          /* defined string */
        char            *d_define;      /* string to substitute for defined string     */
        int             d_dflag;        /* (1) .defined / (0) .undefined */
};

но, насколько я могу судитьэта структура нигде не используется.

...