Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

АСМ vs Си

Вт фев 13, 2007 16:14:50

Сорри за такое название темы.
Как можно реализовать СИ команду на АСМе, например сравнение ">=" ?

Вт фев 13, 2007 16:27:54

В асемблере для таких команд свои команды имеются например BRGE
cp r11, r12
brge greater
...
greater:
...
дл таких случаем есть ветка про мелкие вопросы. кстати это Си ипользует команды асмы

Вт фев 13, 2007 16:41:29

Спасибо, я думал таких ASM команд нет.

Re: АСМ vs Си

Вт фев 13, 2007 16:48:08

Tohey писал(а):Сорри за такое название темы.
Как можно реализовать СИ команду на АСМе, например сравнение ">=" ?


Сделать то что нужно в Си компиляторе и посмотреть листинг на АСМе.

Вт фев 13, 2007 16:51:29

moLCHec писал(а):кстати это Си ипользует команды асмы


нет. Си это язык на котором можно записать алгоритм.

а команды АСМ используют лишь некоторые компиляторы - те что компилят прогу на Си в АСМ а затем АСМ ассемблируют ассемблером (например от производителя процессора).

Вт фев 13, 2007 18:03:02

Abakt либо ты чё то напутал либо я тебя не так понял. Но компилятор под Си преобразует Сишные функции в асемблеровские т.е. елементарные команды микронтроллера которые затем и преобразует в зависимости от типа МК с систему булевых команд. Где то может стадия Си-код АСМ не показана но она есть.

Вт фев 13, 2007 18:07:14

Что то я не пойму как BRGE и BRLT работает :o .

Если сделать cp FF, 0F - тогда переходит.
Если сделать cp FE, 0F - тогда не переходит.
???

Вт фев 13, 2007 18:52:00

moLCHec писал(а):Abakt либо ты чё то напутал либо я тебя не так понял. Но компилятор под Си преобразует Сишные функции в асемблеровские т.е. елементарные команды микронтроллера которые затем и преобразует в зависимости от типа МК с систему булевых команд. Где то может стадия Си-код АСМ не показана но она есть.


может я тебя и не понял. но как ты говоришь "елементарные команды микронтроллера " это машинные коды.

а АСМ инструкции это мнемоники т.е. абревиатуры от описания того что инструкция делает.

Существуют компиляторы Си не использующие АСМ сторонний, т.е. компилятор содержит в себе ассемблер не ввиде отдельного файла.

Вт фев 13, 2007 19:27:25

Tohey вот слушай как если r11>=r12 то переходтит нет работает дальше по строке. работают команды cp и brge в паре

Abakt так и не понял тебя нуда фиг с ним

Ср фев 14, 2007 10:38:40

Tohey писал(а):Если сделать cp FF, 0F - тогда переходит.
Если сделать cp FE, 0F - тогда не переходит.

На сколько я понял, вы сравниваете числа. А надо сравнивать регистры. ИМХО числа в данном случае интерпретируются, как адреса к данным.
Код:
ldi r16, 0xFE
ldi r17, 0x0F
cp r16, r17
brge greater
...
greater:
...

Ср фев 14, 2007 12:06:37

Я сравниваю регистры, просто написал так, коротко :wink: .
2 moLCHec. Я понимаю что работают в паре, но я не понимаю почему FF - меньше FE и меньше 0.

Ср фев 14, 2007 12:35:09

Когда же вы научитесь читать хотя бы доки ? Ну сказано же английским языком: BRGE онализирует результат сравнения регистров, в которых хранятся числа со знаком (вольный перевод). Вот и получается у вас, что 0FFh это -127, a 0FEh - это -126. И все становится на свои места.

Ср фев 14, 2007 16:08:26

Действительно это команда для знаковых, для беззнаковых BRSH.
Ответить