在avr程序集中,我想用一個常數來除數。 我檢查瞭如何看avr-gcc如何做到這一點。 所以在C文件中我有:如何在avr-gcc中不斷的工作?
#include <stdint.h>
uint8_t divide_by_6(uint8_t x) {
return x/6;
}
,當我運行avr-gcc -O3 -mmcu=atmega16 -D__AVR_ATmega16__ -S main.c
它給了我:
divide_by_6:
ldi r25,lo8(-85)
mul r24,r25
mov r24,r1
clr r1
lsr r24
lsr r24
ret
但我不明白這是什麼組件做。 這個彙編代碼如何執行劃分?
準確地說你的問題是什麼? –
這是如何工作的? – orestisf