Member
Статус: Не в сети Регистрация: 11.04.2004 Откуда: СПБ
Foxtrot писал(а):
Это нормально?
Да, это следствие неоптимизированности паскалевского компилятора... Добавлено спустя 2 минуты, 18 секунд И вообще, как правило в коде любого компиля найдутся такие места, где опытный программист написал бы лучше.
Member
Статус: Не в сети Регистрация: 18.08.2005 Откуда: Новороссийск
Foxtrot писал(а):
Я интересуюсь, не будет лм тут каких подводных камней И получу я нормальный код в ассемблерном виде или ещё нужно будет его мучать.
Один мой сокурсник сдавал все зачётные программы на асме, но он его совем не знал и писал всё на паскале, а затем дизасемблировал его и всё сдавал. На сколько это правда я не знаю, так как всё было на словах, а я видел только результат, простейшие задачи у него занимали уйму строк, примерно раз в пять или шесть больше, чем мой код аналогичной задачи написанный сразу на асме. Такой вот пример из жизни.
Foxtrot писал(а):
Хм.. при дизамблерировании получается мягко говоря не маленький код. Хотя исходная программа на Паскале не такая большая. Это нормально?
Нормально, а зачем ты вообще это делаешь? Если обсуждалось выше, можно не отвечать.
Member
Статус: Не в сети Регистрация: 29.05.2005 Откуда: Белгород
2 ALL Ребят, знаете, как работать с графическими режимами VESA под asm-ом?
Так ставится режим 640x480x16M:
Код:
asm { mov ax,4f02h mov bx,0112h int 10h }
а вот как пиксели ставить, память выделять для режима и т.п. не знаю.
_________________ Взрослеем. Возможностей стало больше, времени - меньше. долгосрочно общался: CelD2.1@3.7|A64Venice@2.6|A64SanDiego@2.7|E6420@3.2|E6750@3.5|Q9300@3.5
Member
Статус: Не в сети Регистрация: 12.12.2003 Откуда: Уфа
Вопросик такой. Есть программа на c++, где выполняется некий расчет, состоящий в основном из умножений матрицы на вектор(размерностью около 100 или больше). Есть ли смысл оптимизировать это на ассемблере с применением sse - sse2?
Код:
for (int i2=0; i2<num; i2++) { .....//расчет вектора for (i=0; i<size; i++) for (j=0; j<size; j++) vesa[i]+=vec[j]*G[j][i]; }
То есть в каждом цикле формируется новый вектор vec и умножается на матрицу G.
Member
Статус: Не в сети Регистрация: 18.11.2002 Откуда: не вернуться
Люди, несколько дней бился над проблемой так ничего и не понял...
Ситуация следующая, пишу прогу и в одном моменте мне надо считать с флопа в память сектор и когда читаю сектора с HDD всё работает (всё действие происходит в "Real Mode", знаю что разврат, но в данном случае в этом весь смысл)
Помогите найти ошибку в программе, в теории должна работать но сваливается после Ввода "N" (Tasm и Tlink ошибок не выдают)
Код:
lab8 segment para public 'code' assume cs:lab8,ds:lab8,es:lab8,ss:lab8 org 100h begin: jmp start msginn db 0ah,0dh,'Vvedite razmer masivov N:$' msgina db 0ah,0dh,'Vvod masiva A:$' msginb db 0ah,0dh,'Vvod masiva B:$' msgindeg db 0ah,0dh,'Vvedite element massiva:$' msgouta db 0ah,0dh,'Massiv A:$' msgoutb db 0ah,0dh,'Massiv B:$' msgouty db 0ah,0dh,'Rezult:$' A dw 25 dup (0) B dw 25 dup (0) N dw ? Y dw ? inBuf db 06,00,5 dup(?) outBuf db 7 dup(?),'$' include bin2str.inc include str2bin.inc
;процедура ввода масива ;перед вызовом в регистре ВХ адресс масива ;в регистре СХ - кол-во элементов Input proc xor si,si ;обнулим индекс cmp cx,1 ;проверим кол-во элементов jl @2 @1: push bx ;сохраним адрес масива lea dx,msgindeg mov ah,09h int 21h lea dx,inBuf mov ah,0ah int 21h mov bx,dx inc bx call str2bin pop bx mov [bx][si],ax add si,2 loop @1 @2: ret Input endp
;процедура вывода масива ;перед вызовом в регистре ВХ адрес массива ;в регистре СХ - кол-во элементов Output proc xor si,si cmp cx,1 jl @7 @6: mov ax,[bx][si] push bx lea bx,outBuf call bin2str lea dx,outBuf+1 mov ah,09h int 21h add si,2 pop bx loop @6 @7: ret Output endp
L.A.W. ТурбоДебагером пробвал (взял его от старой Борланд Си) .... он вылитает с ошибкой... вернее его закрывает Виста... вот я не могу понять дело в Висте или вчем еще. Обычный дебагом не пробывал.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения