Forums » Программное обеспечение »
Ассемблер
Added by Natalia_multiclet over 11 years ago
Обсуждение, предложения, замечания
Replies (33)
RE: Ассемблер - Added by krufter_multiclet over 11 years ago
В текущем процессоре для 4-х клеток:
paragraph1: getl 5 - команда уйдёт в клетку 0 getl 6 - команда уйдёт в клетку 1 addl @2, #32 - команда уйдёт в клетку 2 addl @2, #33 - команда уйдёт в клетку 3 getl 123 - команда уйдёт в клетку 0 getl 456 - команда уйдёт в клетку 1 и т.д. complete
RE: Ассемблер - Added by trott over 11 years ago
RE: Ассемблер - Added by krufter_multiclet over 11 years ago
Могут, только не в данном случае(в данном случае команды выполнятся одновременно).
Т.е. если первая команда параграфа будет длиться дольше чем вторая, то команда 4 выполнится быстрее чем третья, т.к. третья команда будет выполнена по готовности своего аргумента.
RE: Ассемблер - Added by trott over 11 years ago
Как вызвать ассемблерную процедуру из C? Как передать ей типы и значение параметров, порядок передачи параметров. Как получить результат выполнения ассемблерной процедуры?
RE: Ассемблер - Added by krufter_multiclet over 11 years ago
Можно написать некоторый код на ассемблере, а потом из Си вызвать этот код через функцию.
Для передачи параметров функции используется стек, подробности тут http://multiclet.com/community/projects/examples/wiki/%D0%9E%D0%B1%D0%B7%D0%BE%D1%80_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81%D0%BE_%D1%81%D1%82%D0%B5%D0%BA%D0%BE%D0%BC
В ассемблерной программе мы получаем значение переданное через стек функцией Си и адрес возврата. Выполняем какой-то алгоритм и если
функция на Си что-то должна возвращать, то записываем возвращаемое значение в стек и совершаем переход по адресу возврата:
rdl #SP jmp @1
В следующей версии процессора можно будет и для индексных регистров сразу писать jmp #SP.
Если успею, то сегодня оформлю страничку http://multiclet.com/community/projects/examples/wiki/%D0%92%D1%8B%D0%B7%D0%BE%D0%B2_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B_ASM_%D0%B8%D0%B7_%D0%A1%D0%B8.
В принципе вызов ассемблерной программы из Си достаточно просто после прочтения этой странички.
RE: Ассемблер - Added by sprin over 11 years ago
Про стек:
Предположим, есть некая функция: int64 Somefunc (int64 param1, int64 param2);
Можно ли передавать через стек данные в 8 байт? Как возвращать значение, если оно 8 байт?
RE: Ассемблер - Added by krufter_multiclet over 11 years ago
Через стек передавать можно, но текущий компилятор С89 не поддерживает тип int64.
RE: Ассемблер - Added by sprin about 11 years ago
1. mc-as.exe:
; Для #GPR выводит ошибку, хотя в "РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. ПО" написано, что можно использовать
rdb #1 ; error: invalid register type for operation 'rdb'
rdl #1 ; error: invalid register type for operation 'rdl'
rdq #1 ; error: invalid register type for operation 'rdq'
2. В новом mc-as.exe команды типа "get(l, b)" для #IR останутся (хотя читать будут 8 байт) или в соответствии с "РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ. ПО" будет только "getq #IR" ?
3. Можете выложить новые версии mc-model.exe, mc-as.exe, mc-ld.exe?
- « Previous
- 1
- 2
- Next »