diff --git a/ebpfcat/ebpf.py b/ebpfcat/ebpf.py
index 84b6d4197fe880bf1981a627680504f4b01c75ea..acd1bae5280821ca2de100bf9c625aa66979aa17 100644
--- a/ebpfcat/ebpf.py
+++ b/ebpfcat/ebpf.py
@@ -1111,6 +1111,10 @@ class EBPF:
         self.mI = MemoryMap(self, "I")
         self.mA = MemoryMap(self, "A")  # actually I, but treat as Q
         self.mQ = MemoryMap(self, "Q")
+        self.mb = MemoryMap(self, "b")
+        self.mh = MemoryMap(self, "h")
+        self.mi = MemoryMap(self, "i")
+        self.mq = MemoryMap(self, "q")
 
         self.r = RegisterArray(self, True, False)
         self.sr = RegisterArray(self, True, True)
diff --git a/ebpfcat/ebpf_test.py b/ebpfcat/ebpf_test.py
index 88928de3150dfedb26b4eefb263413171cb184ba..a4c33e67a6648bc7def7de71bc920bfae06222f4 100644
--- a/ebpfcat/ebpf_test.py
+++ b/ebpfcat/ebpf_test.py
@@ -141,6 +141,8 @@ class Tests(TestCase):
         e.r3 = e.mH[e.r3 + 2]
         e.r4 = e.mI[7 + e.r8]
         e.r5 = e.mQ[e.r3 - 7]
+        e.r5 = e.mb[e.r3] >> 2
+        e.r5 = e.mB[e.r3] >> 2
         self.assertEqual(e.opcodes,
             [Instruction(opcode=114, dst=5, src=0, off=0, imm=7),
              Instruction(opcode=106, dst=3, src=0, off=2, imm=3),
@@ -153,7 +155,12 @@ class Tests(TestCase):
              Instruction(opcode=113, dst=2, src=5, off=0, imm=0),
              Instruction(opcode=105, dst=3, src=3, off=2, imm=0),
              Instruction(opcode=97, dst=4, src=8, off=7, imm=0),
-             Instruction(opcode=121, dst=5, src=3, off=-7, imm=0)])
+             Instruction(opcode=121, dst=5, src=3, off=-7, imm=0),
+             Instruction(opcode=O.B+O.LD, dst=5, src=3, off=0, imm=0),
+             Instruction(opcode=O.LONG+O.ARSH, dst=5, src=0, off=0, imm=2),
+             Instruction(opcode=O.B+O.LD, dst=5, src=3, off=0, imm=0),
+             Instruction(opcode=O.LONG+O.RSH, dst=5, src=0, off=0, imm=2),
+            ])
 
     def test_local(self):
         class Local(EBPF):