Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Гнусный .altmacro
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
ReAl
Не помню кто тут хвалил режим .altmacro у ГНУ-того асма.
Действительно есть приятные вещи, но вот эта возможность ограничивать текстовую строку кгловыми скобками < и > — только мешает :-(
Т.е.
Код
; второй аргумент просто как затычка, облегчающая понимание происходящего.
.macro foo arg1, arg2
    ldi    r16, \arg1
    ldi    r17, \arg2
.endm

    ldi r16, 1<<3
    foo 1<<3
.altmacro
    foo 1<<3; это строка 35

Код
real@realnb:~/o/avr/asm/macros$ make
======== Beginning of project dummy processing
==== Compiling ./src/dummy/main.S
avr-gcc (GCC) 4.7.1
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

./src/dummy/main.S: Assembler messages:
./src/dummy/main.S:35: Error: bad expression
./src/dummy/main.S:35: Error: garbage at end of line
и вот такая фигня в листинге
Код
  32 ???? 00E0              ldi r16, 1<<3
  33                       foo 1<<3
  33 ???? 00E0          >  ldi r16,1<<3
  33 ???? 10E0          >  ldi r17,
  34                   .altmacro
  35                       foo 1<<3
  35 ???? 00E0          >  ldi r16,1
  35 ???? 10E0          >  ldi r17,<3
****  Error:bad expression
****  Error:garbage at end of line
Если foo сделать с одинм аргументом (как в начале поиска и было), то ошибка
Код
./src/dummy/main.S: Assembler messages:
./src/dummy/main.S:35: Error: too many positional arguments
Никакие скобки не помогают, по первому символу < «видит» начало строки и разделяет на два аргумента и от скобок только лишние сообщения об ошибках.

Никаких там волшебных слов нету для этого? В документации не нашел, но мало ли...
Других слов для сдвигов в духе SHL тоже нет :-(
ReAl
Ну а это уже так, «опять хочу в Париж» -- ну почему у gnu as нет пары .ifabs/.ifnabs для проверки -- абсолютное выражение или перемещаемое? Он то знает, на .if foo == 0 может ругнуться, что foo не есть абсолютным выражением.

Как-то обойдусь, не те объёмы асмячть, чтобы аж так макросы вылизывать, но...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.