Сделал генератор ASM в BSD синтаксисе, понимаемом GNU as (binutils). Собрал "генеренку" без ручных правок, diff показывает, что все совпало до бита.
> make diff
pdp11-aout-as -o 134.o 134.asm
pdp11-aout-ld -T pdp11-rom.ld -o 134.out 134.o
pdp11-aout-ld: warning: cannot find entry symbol start; defaulting to 0000000000000000
pdp11-aout-objcopy -O binary 134.out 134.rom
diff -u 134-org.rom 134-new.rom
--- 134-org.rom 2019-03-28 12:32:42.000000000 +0200
+++ 134-new.rom 2019-03-28 12:32:42.000000000 +0200
@@ -371,4 +371,4 @@
000017f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 76 c0 |..............v.|
00001800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
-00002000
+00002200
make: *** [Makefile:28: diff] Error 1
Ну, 134 уже как бы не интересно...![]()
Кому как. Я потратил время на разработать себе инструментарий. Сам разбор 134 по-быстрому занял минут 40.
Вот сейчас втыкаю в разницу между оригинальной 054 и собранной из "генеренки":
> make diff
diff -u 054_mc1201-org.txt 054_mc1201-new.txt
--- 054_mc1201-org.txt 2019-03-28 12:50:46.000000000 +0200
+++ 054_mc1201-new.txt 2019-03-28 12:50:46.000000000 +0200
@@ -177,7 +177,7 @@
00000b00 f9 87 a4 00 f7 83 b4 00 f5 82 a2 00 f3 85 b2 00 |................|
00000b10 f1 84 a8 00 ef 81 b8 00 ed 80 ec 05 a8 00 ea 04 |................|
00000b20 af 00 e8 07 bf 00 e6 06 f7 09 58 ff c2 0d f7 09 |..........X.....|
-00000b30 52 ff 01 01 09 01 c3 15 fe ff c2 78 f7 09 44 ff |R..........x..D.|
+00000b30 52 ff 01 01 09 01 c3 15 fe ff 83 78 f7 09 44 ff |R..........x..D.|
00000b40 87 7e c5 15 09 00 87 00 f7 09 38 ff c2 65 23 00 |.~........8..e#.|
00000b50 f7 09 30 ff c2 60 9f 60 80 ff df 25 1f 02 80 ff |..0..`.`...%....|
00000b60 f0 02 82 11 df 17 04 00 3c 01 df 17 08 00 3e 01 |........<.....>.|
Так лучше видно в octal:
> make diff
diff -u 054_mc1201-org.txt 054_mc1201-new.txt
--- 054_mc1201-org.txt 2019-03-28 12:55:01.000000000 +0200
+++ 054_mc1201-new.txt 2019-03-28 12:55:01.000000000 +0200
@@ -177,7 +177,7 @@
0000b00 103771 000244 101767 000264 101365 000242 102763 000262
0000b10 102361 000250 100757 000270 100355 002754 000250 002352
0000b20 000257 003750 000277 003346 004767 177530 006702 004767
-0000b30 177522 000401 000411 012703 177776 074302 004767 177504
+0000b30 177522 000401 000411 012703 177776 074203 004767 177504
0000b40 077207 012705 000011 000207 004767 177470 062702 000043
0000b50 004767 177460 060302 060237 177600 022737 001037 177600
0000b60 001360 010602 013737 000004 000474 013737 000010 000476
make: *** [Makefile:31: diff] Error 1
upd. Попутал параметры для XOR:
HLTROM:00000165472 074302 xor R2, R3
Оригинальный PDP11 модуль в IDA имеет эту же ошибку. У себя в питоновой реализации поправил анализ XOR.
ASM генеренки для 054 и 134 собираются без ошибок.
Последний раз редактировалось yu.zxpk; 28.03.2019 в 15:06.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)