Вы примерчик - текстовый файл bkcompile.sh посмотрите. Там все операции: 1) macro11; 2) dumpobj; 3) bkobj2bin.
Вы примерчик - текстовый файл bkcompile.sh посмотрите. Там все операции: 1) macro11; 2) dumpobj; 3) bkobj2bin.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Написал по аналогии .bat файл:
только сразу подставляю .obj файл.
rem bkcompile FILENAME.asm
rem F=${1%%asm}
rem macro11 -yus -ysl 16 -o $a.obj -l $a.lst $1
dumpobj a.obj a.dump
bkobj2bin <a.dump >a.bin
pause
При запуске висит. После принудительного закрытия a.bin нулевой.
Николай.
P.S.
А вот исходный файл:
.TITLE testpdp11
.ASECT
.=0000
MOV #111111, R1;x9249
MOVB #222, R2;x92
MOV #133333, R3;
MOV #144444, R4;
BR 000102;
halt;
.=0102
BR 000000;
MOV #111111, R1;
MOV #122222, R2;
MOV #133333, R3;
MOV #144444, R4;
NOP;
halt;
Последний раз редактировалось Ynicky; 15.05.2015 в 21:45.
Перед a.dump поставьте знак "больше". И попробуйте запускать команды по одной, сценарий - когда всё заработает. У меня ваш примерчик успешно собрался, но загружать в эмулятор его не стал.
Оставил одну строчку, убрал pause.
Тоже самое.
При bkobj2bin <a.dump >a.bin пишет:
bkobj2bin 0<a.dump 1>a.bin
При bkobj2bin >a.dump >a.bin пишет:
bkobj2bin 1>a.bin
В обоих случаях висит.
Файл a.dump нормальный.
---------- Post added at 22:36 ---------- Previous post was at 22:28 ----------
У меня Windows8.1 64р.
Visual Studio пишет следующее при компиляции:
All packages are already installed and there is nothing to restore.
NuGet package restore finished.
1>------ Rebuild All started: Project: bkobj2bin, Configuration: Debug Win32 ------
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.Cp pBuild.targets(392,5): warning MSB8028: The intermediate directory (Debug\) contains files shared from another project (bklinker.vcxproj). This can lead to incorrect clean and rebuild behavior.
1> bkobj2bin.c
1>c:\vc6prj\bklinker\bkobj2bin.c(18): warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\windows kits\10\include\10.0.10056.0\ucrt\stdio.h(2254): note: see declaration of 'sscanf'
1>c:\vc6prj\bklinker\bkobj2bin.c(31): warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\windows kits\10\include\10.0.10056.0\ucrt\stdio.h(2254): note: see declaration of 'sscanf'
1>c:\vc6prj\bklinker\bkobj2bin.c(33): warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\windows kits\10\include\10.0.10056.0\ucrt\stdio.h(2254): note: see declaration of 'sscanf'
1>c:\vc6prj\bklinker\bkobj2bin.c(41): warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\windows kits\10\include\10.0.10056.0\ucrt\stdio.h(2254): note: see declaration of 'sscanf'
1> bklinker.vcxproj -> C:\VC6prj\bklinker\Debug\bkobj2bin.exe
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
Cкорее всего у вас компоновщик неправильно собирается. Под Виндуз вроде бы надо указывать где-то, что программа компилируется для консольного режима. Выложил exe - попробуйте. Команда bkobj2bin <a.dump >a.bin должна сделать дело, если a.dump правильный. И, конечно, лучше запускайте с консоли.
1. MACRO.SAV не предоставляет никакой автоматизации кода - т.е. надо предполагать, что набор идет непосредственно в машкоде - т.е. восьмеричными циферками - тогда всё будет абсолютно понятно.
2. Для случая с ДП 1801ВМ3 кодер MACRO.SAV должен сам рассчитывать все режимы - см. п.1.
3. Настоятельно рекомендуется кодить в эмуле ДВК на родных средствах разработки - тогда изрядная часть вопросов отпадет. Родными для ассемблера ДВК считаются :
3.1. Экранный текстовый редактор. ( EDIK.SAV )
3.2. Компиллятор ассемблера MACRO.SAV
3.3. Линковщик LINK.SAV
3.4. Средство коррекции файлов DESS.SAV
3.5. ( Отладочные файлы пользователя - для серьезных проектов )
*
Изучать ЭВМ по эмуляторам - не очень верное решение.
Если есть СЕРЬЕЗНАЯ необходимось в изучении - добудте рабочую ДВК/БК11М - при работе с натуральным железом возникнет сильно меньше вопросов.
*
Рекомендую перед работой со средствами RT-11 изучить документацию на :
1. Процессор М-ЭВМ
2. ТО на М-ЭВМ
3. Описание работы в среде RT-11, в т.ч. языка MACRO.
Это, кстати, вовсе не тоненькие брошурки...
Блог : http://collectingrd.kxk.ru/ . В ЛС прошу не писать, все сообщения [email protected]
To MM:
А можно использовать эмулятор БК001Х с теми же средствами разработки?
To litwr:
bkobj2bin делаю для консоли.
Понял где зависает, на for(;.
Подставляю "for (int i=0;i<1000;i++)", пишет:
@cccccccc fffff060>=0 lines=2000
Possible wrong relocation!
Для чего мне это все нужно.
Хочу на FPGA сделать БК0010. Ресурсов платы хватит только на него.
Для моделирования нужен файл с программой. Можно текстовый или двоичный.
Цикл тут не причем. Данные у вас не читаются входные. Попробуйте запустить программку
Получится после компиляции, например, prog.exe, запускаемКод:/* prog.c */ #include<stdio.h> main() { char s[100]; while (!feof(stdin)) { gets(s); printf("%s\n", s); } }
prog <prog.c
это должно распечатать текст программки - если это заработает, то должен почти наверняка заработать и компоновщик. Тестировал с древним ХР Виндуз - там всё работает, до нового раньше пн не доберусь.
Работает. Вот что пишет в консоли:
C:\VC6prj\prog>prog 0<prog.c
/* prog.c */
#include<stdio.h>
main() {
char s[100];
while (!feof(stdin)) {
gets(s);
printf("%s\n", s);
}
}
}
C:\VC6prj\prog>pause
Для продолжения нажмите любую клавишу . . .
To litwr:
Может выложите свой .dump файл, я до понедельника попробую с ним.
Николай.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)