Encoding 这个替代的二进制表示法有名字吗 问题:

Encoding 这个替代的二进制表示法有名字吗 问题:,encoding,binary,binary-data,notation,Encoding,Binary,Binary Data,Notation,在我正在从事的一个项目中,我必须处理汇编语言指令的编码。通常,在这个空间中,需要表示除一种编码之外的所有编码 我已经为二进制数创建了一个表示法,它允许我以紧凑的形式表示这一点 这种符号有名字吗? 在我的符号中,以下两种编码覆盖了整个16位编码空间: -------DDD------ // DDD represents 000/001/010/011/100/101/110 -- everything but 111 -------111------ -------dDd------ // dD

在我正在从事的一个项目中,我必须处理汇编语言指令的编码。通常,在这个空间中,需要表示除一种编码之外的所有编码

我已经为二进制数创建了一个表示法,它允许我以紧凑的形式表示这一点

这种符号有名字吗?

在我的符号中,以下两种编码覆盖了整个16位编码空间:

-------DDD------ // DDD represents 000/001/010/011/100/101/110 -- everything but 111
-------111------
-------dDd------ // dDd represents 000/001/011/100/101/110/111 -- everything but 010
-------010------
类似地,这两种编码将覆盖整个16位编码空间:

-------DDD------ // DDD represents 000/001/010/011/100/101/110 -- everything but 111
-------111------
-------dDd------ // dDd represents 000/001/011/100/101/110/111 -- everything but 010
-------010------
如果这个符号有名字的话,我也许可以找到可以操纵这些编码的算法,而不必从头开始创建这些算法(这就是我一直在做的)

背景 这种表示法可以方便地表示指令集编码

给定一个16位指令集,其中一条指令可能具有以下格式,其中操作码为[15:9],目标寄存器为[8:6],源1为[5:3],源2为[2:0]:

1
5     9 8 6 5 3 2 0
------- --- --- ---
0000000 Rd  S1   S2    ADD Rd = S1, S2
指令集的设计者可能不允许Rd为用于ADD的R7(例如,编码为0b111),因此,例如S2的位可能用于编码更多的操作码空间,以表示单个源指令

0000000 111 S1  000    NEG R7 = S1
为了使用这些指令编码,我创建了一个表示,以指示编码或编码的一部分何时具有除给定值以外的所有值

因此,上面的ADD和NEG指令可以表示为

0000000 DDD --- ---    ADD Rd = S1, S2
0000000 111 --- 000    NEG R7 = S1