S/390ใฏ1960ๅนดไปฃใซ้็บใใใSystem/360ใใใใคใใชไบๆๆงใไฟใฃใฆใใใขใผใญใใฏใใฃใงใใS/390ใฎๅฝไปคใ่ชฟในใใใ็ทๅฝใใใง้ใขใปใณใใซใใฆใฟใพใใใ
ใใฎ่จไบใซใฏๅงๅฆน็ทจใใใใพใใ
- UNIX/32VใซใใVAXไบๅงใ 2015.9.14
- VAXใฎๆฉๆขฐ่ชใ็ทๅฝใใ่ชฟๆป 2015.9.17
ใฏใญในใณใณใใคใฉ
S/390ใฎๆฉๆขฐ่ชใๆฑใใใใS/390ใใฟใผใฒใใใซใใใฏใญในใณใณใใคใฉใๅฟ
่ฆใงใใไปฅไธใฎๆ้ ใๅ่ใซs390-linux-gccใใใซใใใฆใใ ใใใ
ใในใ
ๅ ใฎ่จไบใจๅใใในใใใใฆใฟใพใใ
int add(int a, int b) {
return a + b;
}
ใณใณใใคใซใใพใใ
$ s390-linux-gcc -nostdlib -g -O add.c
/usr/lib/gcc/../../s390-linux/bin/ld: ่ญฆๅ: ใจใณใใชใทใณใใซ _start ใ่ฆใคใใใพใใใใใใฉใซใใจใใฆ 0000000000400094 ใไฝฟ็จใใพใ
โป ่ญฆๅใฏ็ก่ฆใใพใใ
ๅบๅใใใใใคใใช๏ผa.out๏ผใ้ใขใปใณใใซใใฆใใฉใใชๆฉๆขฐ่ชใๅบๅใใใฆใใใใ็ขบ่ชใใพใใ
$ s390-linux-objdump -S a.out
a.out: ใใกใคใซๅฝขๅผ elf32-s390
ใปใฏใทใงใณ .text ใฎ้ใขใปใณใใซ:
00400094 <add>:
int add(int a, int b) {
return a + b;
}
400094: 1a 23 ar %r2,%r3
400096: 07 fe br %r14
ๅผๆฐใ%r2ใจ%r3ใงๆธกใใใฆใๆปใๅคใฏ%r2ใง่ฟใใใๆงๅญใ่ชญใฟๅใใพใใ%r14ใฏใชใณใฏใฌใธในใฟใฎใใใงใใ
ๆฉๆขฐ่ชใ่ฆใใจใไปฅไธใฎๅฏพๅฟ้ขไฟใ่ฆใฆๅใใพใใ
1a 23 ar %r2,%r3
1a -> ar
2 -> %r2
3 -> %r3
07 fe br %r14
07 f -> br
e -> %r14
ใฉใใใๆงๆ่ฆ็ด ใฏใใใซ๏ผ16้ฒๆฐ1ๆก๏ผๅไฝใงใใชใใณใผใใฏ2ใใใซ๏ผ1ใใคใ๏ผใพใใฏ3ใใใซใฎใใใงใใ
ใชใใณใผใ
ใชใใณใผใใ็ทๅฝใใใใใฐใใในใฆใฎๅฝไปคใใฉใผใใใใๅใใใฏใใงใใ
00
ๆๅงใใซ1ใใคใใฎใผใญใง่ฉฆใใพใใ
$ echo ".byte 0" | s390-linux-as
$ s390-linux-objdump -d a.out
๏ผ็ฅ๏ผ
00000000 <.text>:
0: 00 07 07 07 .long 0x00070707
.longใฏๆชๅฎ็พฉใงใใใใจใ่กจใใพใใ
ใขใฉใคใณใกใณใใ4ใใคใใใใใ07ใงใใใฃใณใฐใใใฆใใพใใไปใฎใขใผใญใใฏใใฃใงใฏใใผใฟใ่ถณใใชใๆใซใฏใจใฉใผใซใชใใฎใงใใใฎใใใซใใใฃใณใฐใใใใฎใฏ็ใใๆๅใงใใ
nopr
่ฃๅฎใใใ07ใฎๆญฃไฝใ็ขบ่ชใใพใใ
$ echo ".byte 7" | s390-linux-as
$ s390-linux-objdump -d a.out
๏ผ็ฅ๏ผ
00000000 <.text>:
0: 07 07 nopr %r7
2: 07 07 nopr %r7
noprใฏใใใใNOPใฎใใใงใใใชใใฉใณใใฏ็ก่ฆใใใใใไฝใงใใใใ07ใง่กจ็พใงใใ%r7ใไฝฟใฃใฆใใใใใงใใ
็ทๅฝใใ(1)
ๆๅใฎ1ใใคใใ็ทๅฝใใใใพใใๅฝไปค้ทใไธๆใชใใใๅพใใฏ07ใงๅใใพใใใขใฉใคใณใกใณใใไบๆณใใฆ16ใใคใใงๆใใพใใ
ใขใใฌในใจใใใฃใณใฐใฎnoprใๅใ้คใใฆใใกใคใซใซไฟๅญใใพใใ
$ for i in {0..255}; do printf ".byte 0x%02x,7,7,7, 7,7,7,7, 7,7,7,7, 7,7,7,7\n" $i; done > allop.s
$ s390-linux-as -o allop.o allop.s
$ s390-linux-objdump -d allop.o | cut -sf2- | grep -v nopr | tee allop.d
00 07 07 07 .long 0x00070707
01 07 sckpf
02 07 07 07 .long 0x02070707
๏ผ็ฅ๏ผ
fd 07 07 07 07 07 dp 1799(1,%r0),1799(8,%r0)
fe 07 07 07 .long 0xfe070707
ff 07 07 07 .long 0xff070707
ๅฝไปค้ท
ๆชๅฎ็พฉใฎ.longใๅใ้คใใฆๅฝไปคใ็บใใพใใ
$ grep -v long allop.d
01 07 sckpf
05 07 balr %r0,%r7
๏ผ็ฅ๏ผ
3e 07 aur %f0,%f7
3f 07 sur %f0,%f7
40 07 07 07 sth %r0,1799(%r7,%r0)
41 07 07 07 la %r0,1799(%r7,%r0)
๏ผ็ฅ๏ผ
be 07 07 07 stcm %r0,7,1799
bf 07 07 07 icm %r0,7,1799
c0 07 07 07 07 07 xilf %r0,117901063
c4 07 07 07 07 07 sthrl %r0,0xe0e1a4e
๏ผ็ฅ๏ผ
fc 07 07 07 07 07 mp 1799(1,%r0),1799(8,%r0)
fd 07 07 07 07 07 dp 1799(1,%r0),1799(8,%r0)
ๅฝไปค้ทใใใใใซๅๅธใใฆใใพใใๅพใฎ่ชฟๆป็ตๆใ่ฆใฆใไพๅคใฏใชใใใใงใใ
| ๅ ้ ญ1ใใใซ | ๅฝไปค้ท |
|---|---|
0-3
|
2 |
4-b
|
4 |
c-f
|
6 |
ๅฏๅค้ทใขใผใญใใฏใใฃใงใฏใใพใใซ้ทใๅฝไปคใฎใใณใใ้ไธญใงๆน่กใใใใใจใใใใพใใใallop.dใใใงใใฏใใ้ใใงใฏใฏใฟๅบใใฆใใพใใใ
็ทๅฝใใ(2)
ๅฝไปค้ทใๅใใฃใใฎใงๅพ็ถใฎใใคใใ็ทๅฝใใใใพใใใใ ใๅฎๅ จใช็ทๅฝใใใงใฏๆ้ใๆใใ้ใใใใใไปฅไธใฎๆน้ใง้ๅผใใพใใ
- 2ใใคใๅฝไปคใฏๅฎๅ จใช็ทๅฝใใ (64*256=16,384้ใ)
- ใใไปฅๅคใฏๆๅใฎ2ใใคใใจๆๅพใฎ1ใใคใใ็ทๅฝใใ (192256256=12,582,912้ใ)
่จไบใๆธใๅใฎไบๅ่ชฟๆปใงใชใใฉใณใใจๆฉๆขฐ่ชใฎๅฏพๅฟ้ขไฟใ่ชฟในใ้ใๆ็ตใใคใใซใชใใฉใณใใๆฅใชใใใฟใผใณใ่ฆไปใใใใใ็ทๅฝใใใฎๅฏพ่ฑกใจใใฆใใพใใ
$ for i in {0..63}; do for j in {0..255}; do printf ".byte 0x%02x,0x%02x,7,7\n" $i $j; done; done > allop2.s
$ for i in {0..255}; do for j in {0..255}; do printf ".byte X,0x%02x,Y,0x%02xZ\n" $i $j; done; done > allop-template.s
$ for i in {64..191}; do hex=`printf "%02x" $i`; sed "s/X/0x$hex/" allop-template.s | sed "s/Y/0x12/" | sed "s/Z//"; done > allop4.s
$ for i in {192..255}; do hex=`printf "%02x" $i`; sed "s/X/0x$hex/" allop-template.s | sed "s/Y/0x12,0x34,0x56/" | sed "s/Z/,7,7/"; done > allop6.s
$ for i in 2 4 6; do s390-linux-as -o allop$i.o allop$i.s; s390-linux-objdump -d allop$i.o | grep -v long | cut -f2- | grep -v "^07 07" > allop$i.d; done
$ (cat allop[24].d; grep -v "^56" allop6.d) > allop-2.d
ๅบๅใใใallop-2.dใในใฏใชใใใงๅๆใใพใใ
# !/usr/bin/env perl
%mne = ();
$cur = "";
sub output {
my %tmp = ();
while (my ($m, $o) = each %mne) {
$o =~ s/^(.. ..) 12/$1 --/;
$o =~ s/^(.. .. ..) 34 56/$1 -- --/;
$tmp{$o} = $m;
}
foreach $o(sort keys %tmp) {
print "$o\t$tmp{$o}\n";
}
}
while (<>) {
chop while substr($_, -1) le " ";
@f = split(/\t/);
$o = $f[0];
$m = $f[1];
$o1 = substr($o, 0, 2);
if ($cur ne $o1) {
output();
%mne = ();
$cur = $o1;
}
$t = $mne{$m};
if ($t eq "") {
$mne{$m} = $o;
} else {
$oo = "";
for ($i = 0; $i < length($t); ++$i) {
$ch = substr($t, $i, 1);
$oo .= $ch eq substr($o, $i, 1) ? $ch : "-";
}
$mne{$m} = $oo;
}
}
output();
ใฝใผในใๆจๆบๅ ฅๅใงๆธกใใฆๅฎ่ก็ตๆใใใกใคใซใซๅบๅใใพใใ
$ ./allop-2.pl < allop-2.d | tee allop-2.txt
01 01 pr
01 02 upt
01 04 ptff
๏ผ็ฅ๏ผ
fb -- -- -- -- -- sp
fc -- -- -- -- -- mp
fd -- -- -- -- -- dp
ใใผใขใใใฏใใจใซๆฉๆขฐ่ชใฎๅคๅใ่ชฟในใพใใ16้ฒๆฐใฏๅคๅใใชใใชใใณใผใใฎ้จๅใงใ-ใฏๅคๅใใใชใใฉใณใใฎ้จๅใงใใ
ๅ จ้จใง777ๅฝไปคใงใใ
$ wc -l allop-2.txt
777 allop-2.txt
ใชใใณใผใใฎใฟใคใใฏ13็จฎ้กใงใใ้ฃใณๅฐใซใชใฃใฆใใใฎใ็ขบ่ชใงใใพใใ
$ cut -f1 allop-2.txt | sed s/[0-9a-f]/X/g | sort | uniq -c | nl
1 33 XX -- -- -- -- --
2 79 XX -- -- --
3 56 XX --
4 189 XX -- -- -- -- XX
5 60 XX -X -- -- -- --
6 16 XX X- -- --
7 39 XX -X -- --
8 16 XX X-
9 1 XX -X
10 92 XX -X -- -- -- XX
11 32 XX XX -- -- -- --
12 154 XX XX -- --
13 10 XX XX
ใชใใฉใณใ
ในใฏใชใใใงใชใใฉใณใใฎ้จๅใซ้ฉๅฝใชๅคใๅใ่พผใใงใใในใ็จใขใปใณใใชใ็ๆใใพใใ
# !/usr/bin/env perl
while (<>) {
@f = split(/\t/);
$o = $f[0];
chop $o while substr($o, -1) le " ";
$o =~ s/^(..) -/$1 1/;
$o =~ s/^(.. .)-/$1.2/e;
$o =~ s/^(.. ..) -- --/$1 34 56/;
$o =~ s/^(.. .. .. ..) --/$1 78/;
$o =~ s/^(.. .. .. .. ..) --/$1 9a/;
print ".byte 0x", join(", 0x", split(/ /, $o)), "\n";
}
ใฝใผในใๆจๆบๅ ฅๅใงๆธกใใฆๅฎ่ก็ตๆใใใกใคใซใซๅบๅใใพใใ
$ ./allop-3.pl < allop-2.txt | tee allop-3.s
.byte 0x01, 0x01
.byte 0x01, 0x02
.byte 0x01, 0x04
๏ผ็ฅ๏ผ
.byte 0xfb, 0x12, 0x34, 0x56, 0x78, 0x9a
.byte 0xfc, 0x12, 0x34, 0x56, 0x78, 0x9a
.byte 0xfd, 0x12, 0x34, 0x56, 0x78, 0x9a
็ตใฟๅใใ
ใขใปใณใใซใใฆ้ใขใปใณใใซใใพใใ
$ s390-linux-as -o allop-3.o allop-3.s
$ s390-linux-objdump -d allop-3.o | cut -sf2- | grep -v "^07 07" | tee allop-3.d
01 01 pr
01 02 upt
01 04 ptff
๏ผ็ฅ๏ผ
fb 12 34 56 78 9a sp 1110(2,%r3),2202(3,%r7)
fc 12 34 56 78 9a mp 1110(2,%r3),2202(3,%r7)
fd 12 34 56 78 9a dp 1110(2,%r3),2202(3,%r7)
ใชใใฉใณใใฎ็ตใฟๅใใใ็ขบ่ชใใใจใ็ธๅฏพใขใใฌในใๅฅใซใฆใณใใใใฆใใพใใพใใ
$ cut -f3 allop-3.d | sort | uniq -c | nl
1 10
2 2 %a1,%a2,1110(%r3)
3 2 %a1,%a2,492630(%r3)
๏ผ็ฅ๏ผ
29 1 %r1,0x68acf65a
30 1 %r1,0x68acf666
31 1 %r1,0x68acf750
๏ผ็ฅ๏ผ
123 9 1110(2,%r3),2202(3,%r7)
124 1 18
125 10 492630(%r3),18
ๅๅฒ่ชฟๆป
็ธๅฏพใขใใฌในใๆใใใใใไธ่กใใคๅใใฆๅฆ็ใใพใใ
$ while read line; do echo $line | s390-linux-as; s390-linux-objdump -d a.out | head -n8 | tail -n1 | cut -f2-; done < allop-3.s | tee allopr.d
01 01 pr
01 02 upt
01 04 ptff
๏ผ็ฅ๏ผ
fb 12 34 56 78 9a sp 1110(2,%r3),2202(3,%r7)
fc 12 34 56 78 9a mp 1110(2,%r3),2202(3,%r7)
fd 12 34 56 78 9a dp 1110(2,%r3),2202(3,%r7)
ใชใใฉใณใใฎ็ตใฟๅใใใฏ62็จฎ้กใงใใ
$ cut -f3 allopr.d | sort | uniq -c | nl
1 10
2 2 %a1,%a2,1110(%r3)
3 2 %a1,%a2,492630(%r3)
๏ผ็ฅ๏ผ
60 9 1110(2,%r3),2202(3,%r7)
61 1 18
62 10 492630(%r3),18
ๅฏพๅฟ้ขไฟ
ใชใใฉใณใใฏใใใซๅไฝใงๅบๅใใใพใใใใใๆผ็ฎใไธ่ฆใงใใณใใใ่ฆ่ชใงใใใฎใงไพฟๅฉใงใใ
ไพใ็คบใใพใใๆฌๅผงใฎไธญใฎๅณๅคใฏ+1ใใใฆใใใใจใซๆณจๆใใพใใ
fd 12 34 56 78 9a dp 1110(2,%r3),2202(3,%r7)
fd -> dp
1 -> 2=1+1
2 -> 3=2+1
3 -> %r3
4 56 -> 1110=0x456
7 -> %r7
8 9a -> 2202=0x89a
ใฌใธในใฟใฏใใใซใใใฎใพใพใฌใธในใฟ็ชๅทใซใชใใฎใงใๅฏพๅฟ้ขไฟใ็ฐกๅใซๅใใใพใใ
ๅๆ
ใชใใฉใณใใ1ใคใใคๅใๅบใใฆ็จฎ้กใ่ชฟในใพใใๆฌๅผงใฎไธญใงๅบๅใใใชใใใใซใไธๆฆใปใใณใญใณใซ็ฝฎใๆใใฆๅๅฒใใฆใใๅ ใซๆปใใพใใ
$ cut -f2- allopr.d | cut -sf2 | sed 's/(\([^)]*\),\([^)]*\))/(\1;\2)/g' | sed 's/,/\n/g' | sed 's/;/,/g' | sort | uniq > allopr.txt
ใใฎ็ตๆใๆไฝๆฅญใงๅๆใใฆใๅฏพๅฟใใๆฉๆขฐ่ชใๆจๅฎใใพใใ
| ็จฎ้ก | ใชใใฉใณใ | ๆฉๆขฐ่ช | ๅ่ |
|---|---|---|---|
| ใฌใธในใฟ | %a1 |
-- 1 |
|
| ใฌใธในใฟ | %a2 |
-- -2 |
|
| ใฌใธในใฟ | %c1 |
-- 1 |
|
| ใฌใธในใฟ | %c2 |
-- -2 |
|
| ใฌใธในใฟ | %f1 |
-- 1 |
|
| ใฌใธในใฟ | %f2 |
-- -2 |
|
| ใฌใธในใฟ | %f3 |
-- -- 3 |
|
| ใฌใธในใฟ | %f5 |
-- -- -- 5 |
|
| ใฌใธในใฟ | %f6 |
-- -- -- -6 |
|
| ใฌใธในใฟ | %f7 |
-- -- -- -- 7 |
|
| ใฌใธในใฟ | %r1 |
-- 1 |
|
| ใฌใธในใฟ | %r2 |
-- -2 |
|
| ใฌใธในใฟ | %r3 |
-- -- 3 |
|
| ใฌใธในใฟ | %r5 |
-- -- -- 5 |
|
| ใฌใธในใฟ | %r6 |
-- -- -- -6 |
|
| ใกใขใช | 1110(%r1,%r3) |
-- 1- 34 56 |
0x456=1110 |
| ใกใขใช | 1110(%r2,%r3) |
-- -2 34 56 |
|
| ใกใขใช | 1110(%r3) |
-- -- 34 56 |
|
| ใกใขใช | 1110(19,%r3) |
-- 12 34 56 |
0x12+1=19 |
| ใกใขใช | 1110(2,%r3) |
-- 1- 34 56 |
1+1=2 |
| ใกใขใช | 2202(%r7) |
-- -- -- -- 78 9a |
0x89a=2202 |
| ใกใขใช | 2202(19,%r7) |
-- 12 -- -- 78 9a |
0x12+1=19 |
| ใกใขใช | 2202(3,%r7) |
-- -2 -- -- 78 9a |
1+1=2 |
| ใกใขใช | 492630(%r2,%r3) |
-- -2 34 56 78 |
0x78456=492630 |
| ใกใขใช | 492630(%r3) |
-- -- 34 56 78 |
|
| ๅณๅค | 0 |
-- 0 |
ใชใใณใผใใฎไธ้จ๏ผ |
| ๅณๅค | 1 |
-- 1 |
|
| ๅณๅค | 2 |
-- -2 |
|
| ๅณๅค | 3 |
-- -- 3 |
|
| ๅณๅค | 4 |
-- -- -4 |
|
| ๅณๅค | 7 |
-- -- -- -- 7 |
|
| ๅณๅค | 8 |
-- -- -- -- -8 |
|
| ๅณๅค | 18 |
-- 12 |
0x12=18 |
| ๅณๅค | 52 |
-- -- 34 |
0x34=52 |
| ๅณๅค | 86 |
-- -- -- 56 |
0x56=86 |
| ๅณๅค | 120 |
-- -- -- -- 78 |
0x78=120 |
| ๅณๅค | 13398 |
-- -- 34 56 |
0x3456=13398 |
| ๅณๅค | 30874 |
-- -- -- -- 78 9a |
0x789a=30874 |
| ๅณๅค | 878082202 |
-- -- 34 56 78 9a |
0x3456789a=878082202 |
| ็ธๅฏพใขใใฌใน | 0x468 |
-- -2 34 |
0+2*0x234=0x468 |
| ็ธๅฏพใขใใฌใน | 0x68ac |
-- -- 34 56 |
0+2*0x3456=0x68ac |
| ็ธๅฏพใขใใฌใน | 0x68acf134 |
-- -- 34 56 78 9a |
0+2*0x3456789a=0x68acf134 |
| ็ธๅฏพใขใใฌใน | 0xacf134 |
-- -- -- 56 78 9a |
0+2*0x56789a=0xacf134 |
| ็ธๅฏพใขใใฌใน | 0xf134 |
-- -- -- -- 78 9a |
0+2*0x789a=0xf134 |
็ธๅฏพใขใใฌในใฎๅบ็นใฏไปใฎๅฝไปคใงใ๏ผใใฎไพใงใฏ0็ชๅฐ๏ผใๅฝไปค้ทใฏๅถๆฐใฎใใใชใใฉใณใใ2ๅใใฆใใพใใๅคงๆตใฎใขใผใญใใฏใใฃใงใฏๆฌกใฎๅฝไปคใๅบ็นใซใชใฃใฆใใใฎใจ็ฐใชใใใใๆณจๆใๅฟ ่ฆใงใใ
ๅฝไปคใใฉใผใใใไธ่ฆง
่ชฟๆป็ตๆใๅบใซในใฏใชใใใงๅฝไปคใใฉใผใใใไธ่ฆงใ็ๆใใพใใ
# !/usr/bin/env perl
%opt = (
"%a1" => ["%aS" , "-- S" ],
"%a2" => ["%aT" , "-- -T" ],
"%c1" => ["%cS" , "-- S" ],
"%c2" => ["%cT" , "-- -T" ],
"%f1" => ["%fS" , "-- S" ],
"%f2" => ["%fT" , "-- -T" ],
"%f3" => ["%fU" , "-- -- U" ],
"%f5" => ["%fW" , "-- -- -- W" ],
"%f6" => ["%fX" , "-- -- -- -X" ],
"%f7" => ["%fY" , "-- -- -- -- Y" ],
"%r1" => ["%rS" , "-- S" ],
"%r2" => ["%rT" , "-- -T" ],
"%r3" => ["%rU" , "-- -- U" ],
"%r5" => ["%rW" , "-- -- -- W" ],
"%r6" => ["%rX" , "-- -- -- -X" ],
"1110(%r1,%r3)" => ["V(%rS,%rU)" , "-- S- UV VV" ],
"1110(%r2,%r3)" => ["V(%rT,%rU)" , "-- -T UV VV" ],
"1110(%r3)" => ["V(%rU)" , "-- -- UV VV" ],
"1110(19,%r3)" => ["V(S,%rU)" , "-- SS UV VV" ],
"1110(2,%r3)" => ["V(S,%rU)" , "-- S- UV VV" ],
"2202(%r7)" => ["Z(%rY)" , "-- -- -- -- YZ ZZ"],
"2202(19,%r7)" => ["Z(S,%rY)" , "-- SS -- -- YZ ZZ"],
"2202(3,%r7)" => ["Z(T,%rY)" , "-- -T -- -- YZ ZZ"],
"492630(%r2,%r3)" => ["YV(%rT,%rU)", "-- -T UV VV YY" ],
"492630(%r3)" => ["YV(%rU)" , "-- -- UV VV YY" ],
"0" => ["S" , "-- S" ],
"1" => ["S" , "-- S" ],
"2" => ["T" , "-- -T" ],
"3" => ["U" , "-- -- U" ],
"4" => ["U" , "-- -- -U" ],
"7" => ["Y" , "-- -- -- -- Y" ],
"8" => ["Z" , "-- -- -- -- -Z" ],
"18" => ["S" , "-- SS" ],
"52" => ["U" , "-- -- UU" ],
"86" => ["W" , "-- -- -- WW" ],
"120" => ["Y" , "-- -- -- -- YY" ],
"13398" => ["U" , "-- -- UU UU" ],
"30874" => ["Y" , "-- -- -- -- YY YY"],
"878082202" => ["U" , "-- -- UU UU UU UU"],
"0x468" => ["0xT" , "-- -T TT" ],
"0x68ac" => ["0xU" , "-- -- UU UU" ],
"0x68acf134" => ["0xU" , "-- -- UU UU UU UU"],
"0xacf134" => ["0xW" , "-- -- -- WW WW WW"],
"0xf134" => ["0xY" , "-- -- -- -- YY YY"]
);
while (<>) {
chop while substr($_, -1) le " ";
($bin, $mne, $opr) = split(/\t/);
$opr =~ s/\(([^)]+),([^)]+)\)/($1;$2)/g;
@oprs = ();
foreach $o(split(",", $opr)) {
$o =~ s/;/,/g;
($o1, $b1) = @{$opt{$o}};
for ($j = 0; $j < length($b1); ++$j) {
$ch = substr($b1, $j, 1);
if ($ch ge "S") {
$bin = substr($bin, 0, $j) . $ch . substr($bin, $j + 1);
}
}
push(@oprs, $o1);
}
print "$bin\t$mne\t", join(",", @oprs), "\n";
}
ใฝใผในใๆจๆบๅ ฅๅใงๆธกใใฆๅฎ่ก็ตๆใใใกใคใซใซๅบๅใใพใใ
$ ./format.pl < allopr.d | tee format.txt
01 01 pr
01 02 upt
01 04 ptff
๏ผ็ฅ๏ผ
fb ST UV VV YZ ZZ sp V(S,%rU),Z(T,%rY)
fc ST UV VV YZ ZZ mp V(S,%rU),Z(T,%rY)
fd ST UV VV YZ ZZ dp V(S,%rU),Z(T,%rY)
ไปฅไธใง็ทๅฝใใใซใใ่ชฟๆปใฏๅฎไบใใพใใใ
ใพใจใ
ไปๅใฎในใฏใชใใใๅบๅ็ตๆใฏไปฅไธใซ็ฝฎใใฆใใใพใใ
Comments
Let's comment your feelings that are more than good