Size: a a a

Maxwell's Demons

2021 September 20

IF

Imya Familiev in Maxwell's Demons
наверное вопрос к тебе, как из листинга что gcc генерирует из сишных файлов убрать всякие дебажные метки, оставив только сами инструкции
$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@
у меня щас листинги вот так формируются, но чет я не могу найти -ad,-alms инфу по этим флагам
источник

IF

Imya Familiev in Maxwell's Demons
то в этой каше черт ногу сломит, да
источник

V

VadimAnimeEmbedder in Maxwell's Demons
То есть охото получить вывод при сборке типа:
[C] файл.c
источник

V

VadimAnimeEmbedder in Maxwell's Demons
?
источник

IF

Imya Familiev in Maxwell's Demons
ага
источник

V

VadimAnimeEmbedder in Maxwell's Demons
Тогда изи катка.
источник

V

VadimAnimeEmbedder in Maxwell's Demons
Держи.
источник

V

VadimAnimeEmbedder in Maxwell's Demons
build/obj/%.o: %.s
 @echo [AS] $<
 @mkdir -p $(dir $@)
 @$(GCC) $(MC_FLAGS) $(OPT) -c $< -o $@
источник

V

VadimAnimeEmbedder in Maxwell's Demons
Только AS еа C заменить. И .s на .c.
источник

V

VadimAnimeEmbedder in Maxwell's Demons
Вот пример полного скрипта сборки всего проекта, который состоит только из .s файлов.
источник

V

VadimAnimeEmbedder in Maxwell's Demons
PROJ_NAME := zx_mini
MC_FLAGS  := -mcpu=cortex-m0plus -mthumb -mfloat-abi=soft
OPT       := -O0 -g3
LD_FILES  := -T ld/mem.ld -T ld/sections.ld
MAP       := -Wl,-Map=build/${PROJ_NAME}.map
NO_LIB    := -nostartfiles -nodefaultlibs -nolibc -nostdlib -static
LDFLAGS   := $(LD_FILES) $(MAP) $(NO_LIB)

TOOLCHAIN      := $(TOOLCHAIN_PATH)/arm-none-eabi
GCC            := $(TOOLCHAIN)-gcc
SIZE           := $(TOOLCHAIN)-size

PROJ_S_FILES   := $(shell find -maxdepth 100 -type f -name "*.s")
PROJ_OBJ_FILES := $(addprefix build/obj/, $(PROJ_S_FILES))
PROJ_OBJ_FILES := $(patsubst %.s, %.o, $(PROJ_OBJ_FILES))

build/obj/%.o: %.s
 @echo [AS] $<
 @mkdir -p $(dir $@)
 @$(GCC) $(MC_FLAGS) $(OPT) -c $< -o $@

build/$(PROJ_NAME).elf: $(PROJ_OBJ_FILES)
 @$(GCC) $(MC_FLAGS) $(OPT) $(LDFLAGS) $(PROJ_OBJ_FILES) -o build/$(PROJ_NAME).elf
 @echo 'Finished building target: $@'

$(PROJ_NAME).siz: build/$(PROJ_NAME).elf
 @echo 'Print Size:'
 @$(SIZE) --format=berkeley "build/$(PROJ_NAME).elf"

all: $(PROJ_NAME).siz

clean:
 @if [ -d build ] ; then rm -R ./build ; fi
 @echo 'Project was cleaned'
источник

V

VadimAnimeEmbedder in Maxwell's Demons
TOOLCHAIN_PATH - из командной строки идет.
источник

IF

Imya Familiev in Maxwell's Demons
чето не пойму где тут вывод листингов
источник

V

VadimAnimeEmbedder in Maxwell's Demons
@$(GCC) $(MC_FLAGS) $(OPT) -c $< -o $@
источник

V

VadimAnimeEmbedder in Maxwell's Demons
make all TOOLCHAIN_PATH=/home/vadim/prog/gcc-arm-none-eabi-10.3-2021.07/bin/
[AS] startup/reset_handler.s
[AS] startup/irq_vector.s
[AS] main.s
Finished building target: build/zx_mini.elf
Print Size:
  text     data      bss      dec      hex  filename
   268        0        0      268      10c  build/zx_mini.elf
источник

V

VadimAnimeEmbedder in Maxwell's Demons
Вывод такой вот у меня.
источник

V

VadimAnimeEmbedder in Maxwell's Demons
Это же то, что тебе нужно?
источник

IF

Imya Familiev in Maxwell's Demons
я про генерацию листингов же)
там как минимум -S должен быть по описанию из инета, а у меня флаги -a,-ad,-alms
источник

V

VadimAnimeEmbedder in Maxwell's Demons
Стоп. То есть тебе не просто вывод сборки нужен, а генерация для каждого .c файла .asm файла?
источник

V

VadimAnimeEmbedder in Maxwell's Demons
Задачу не понял просто.
источник