Преобразование BIN -->BCD

Вы ещё не поняли, что это звиздобол, котрый не знает ни Си, ни языка ассемблера?

1 лайк

Просто объем знаний мал для вступления в спор по такому вопросу как ASM vs C/C++

де Диван не знает ничего, он просто пустое место. Это было ясно с его первого поста … ну может второго, лень искать.
Про фьюзы было уже достаточно.
Я же давно написал, что
обрывки старых знаний уже не способны прикрыть стыд невежества

Не понимаю коллег Садмана и Командира, которые не прекращают с ним общаться “по-существу”.

Так от скуки …
Форум иногда часами мертв …
А тут @dedivan с самозакапывающей лопатой …

1 лайк

Сила в умении комбинировать ASM + C/C++ или C/C++ + ASM и сразу пример:
Код из первого сообщения темы - Провел тест. OLED дисплей 128x64 на чипе SSD1306 подключен через I2C, соплями, без пайки и работает с частотой 271+ FPS

Глубоко не полезу - одна функция __reset

...
uint32_t const __Vector_Table [] __attribute__ ((section ("RESET")))={
	(uint32_t) &__Vector_Table [2],									//Top of stack
	(uint32_t) &__reset,											//Reset handler
	0x20005000,
	PERIPH_BB_BASE+((uint32_t)&RCC->CR-PERIPH_BASE)*32+RCC_CR_HSION_Pos*4,
	PERIPH_BB_BASE+((uint32_t)&FLASH->ACR-PERIPH_BASE)*32+POS(FLASH_ACR_LATENCY_1)*4,
	(uint32_t)&RCC->CFGR,
	RCC_CFGR_PLLMULL9|RCC_CFGR_PLLSRC|RCC_CFGR_PPRE1_DIV2,
	PERIPH_BB_BASE+((uint32_t)&RCC->CFGR-PERIPH_BASE)*32+POS(RCC_CFGR_SW_1)*4
};
...
void __attribute__ ((naked)) __reset(void){
	__asm volatile(
		"POP {r1-r6,r8,r9,r10} \n\t"
		"MOV sp,r1 \n\t"
		"MOVS r1,1 \n\t"
		"STR r1,[r2,%0] \n\t"		//HSE On
		"STR r1,[r3] \n\t"			//FLASH LATENCY = 2
		"wait_HSERDY: \n\t"
		"LDR r0,[r2,%1] \n\t"
		"MOVS r0,r0 \n\t"
		"BEQ wait_HSERDY \n\t"
		"STR r5,[r4] \n\t"			//PLL MULL = 9
		"STR r1,[r2,%2] \n\t"		//PLL On
		"wait_PLLRDY: \n\t"
		"LDR r0,[r2,%3] \n\t"
		"MOVS r0,r0 \n\t"
		"BEQ wait_PLLRDY \n\t"
		"STR r1,[r6] \n\t"			//PLL selected as system clock
		"wait_PLL: \n\t"
		"LDR r0,[r6,%4] \n\t"
		"MOVS r0,r0 \n\t"
		"BEQ wait_PLL \n\t"
		"STR r7,[r2] \n\t"			//HSI Off
		"STR r9,[r8,4] \n\t"
		"STR r10,[r8] \n\t"
		"B __main \n\t"
	:
	: "X" ((RCC_CR_HSEON_Pos-RCC_CR_HSION_Pos)*4),
	  "X" ((RCC_CR_HSERDY_Pos-RCC_CR_HSION_Pos)*4),
	  "X" ((RCC_CR_PLLON_Pos-RCC_CR_HSION_Pos)*4),
	  "X" ((RCC_CR_PLLRDY_Pos-RCC_CR_HSION_Pos)*4),
	  "X" ((POS(RCC_CFGR_SWS_1)-POS(RCC_CFGR_SW_1))*4)
	:
	);
}

Первый же POP заполнит кучу регистров данными из “таблицы векторов” и с этими данными (в основном через bit-banding) STM32 запустится на 72 МГц …

Считанные байты кода и процессор готов к main …
Какого размера код под STM32 порождает запуск на 72 МГц (void Set_SysClock72Mhz(void)) и пустой main у вас ?

На чём этот код ??? C/C++ + ASM …

1 лайк

И снять старый и впять новый, так ты значит паяльщик а программист.

Интересно, как он “через барышню” постит нам тут ссылки? Или все же на нормальный пэка влез и от винды его не тошнит?

Плохо Вы знаете.
Во-первых, Вы, похоже, не знаете, что стеки бывают самые разные, и большинству из них никакие вызовы метода или функции не страшны.
Во-вторых, метод или функция совсем не обязательно что-то вообще делают со стеком. В языке Си (Си = это Вам не Ассемблер!) специально для таких случаев есть зарезервированное слово inline.

Зато я сильно подозреваю, что Вы мало с кем из “Си-писателей” знакомы. Точнее, либо вообще ни с кем, либо с парочкой самых-самых зеленых, которых то и в Си-писатели записывать рано.

Отнюдь.

Тока ща имел возможность, все это прочитать, у меня на душе спокоествие настало, очередной, не признаный гений уходит в быль…
Пойду в полянах отмечусь))

Так то и я смогу… (цы) скомпилируй, посмотрим тогда.

Все, Командир, сливайся :rofl::smile:

У него нет пэка, у него “писюк”. Нет, не так, ПИСЮК!

Это же не мне понадобилось … это @dedivan что то там пытался на ASM разглядеть в стеке …

На Си можно применять ко всем вызовам различные квалификаторы, в том числе и такие, которые затрагивают стек.
А вот случай с USB не показатель. Зачем создавать проблему, а потом её героически решать? Я не знаю кто и зачем этот v-USB сделал, но не проще ли использовать специализированные средства?

Пипец ребята… вы все еще кормите этого тролля? Я и не знал… я еще на первой сотне заблочил у себя всю тему и даже не подозревал, что тут столько всего “навалили”.

Кстати, рекомендую - под окном ответа ставите режим темы “Без уведомлений” - и вы просто перестанете видеть эту тему в списках форума, как будто ее никогда и не было.

Только штоп в другие топики не прорвался.

2 лайка

Тут на форуме и так особой активности нет. Ежели еще и тролей заблочить - то вообще нечего будет почитать.

Книжки нужно читать, пока еще не окончательно запретили :slight_smile: Ну и поговаривают, за пределами forum.arduino.ru есть другие сайты. Хотя это не точно

3 лайка

Вопрос надо ставить шире- кто добавил в язык си асм-вставки, зачем, если на чистом си всё можно написать?
Вопрос к местным троллям.

И вообще самые правильные и красивые стихи должны писаться пером на бумаге из берёзы.
И зачем на автомобилях дураки придумали заднюю передачу? Мы ведь вперёд ездим. А ещё и инструмент(ассемблер) в багажнике, когда проще вызвать эвакуатор за 100км и отогнать в сервис(Си) для замены колеса.