# MPX instructions .allow_index_reg .text start: ### bndmk bndmk (%eax), %bnd1 bndmk (0x399), %bnd1 bndmk 0x3(%edx), %bnd1 bndmk (%eax,%ecx), %bnd1 bndmk (,%ecx,1), %bnd1 bndmk 0x3(%ecx,%eax,1), %bnd1 ### bndmov bndmov (%eax), %bnd1 bndmov (0x399), %bnd1 bndmov 0x3(%edx), %bnd2 bndmov (%eax,%edx), %bnd2 bndmov (,%eax,1), %bnd2 bndmov 0x3(%ecx,%eax,1), %bnd1 bndmov %bnd2, %bnd0 bndmov %bnd1, (%eax) bndmov %bnd1, (0x399) bndmov %bnd2, 0x3(%edx) bndmov %bnd2, (%eax,%edx) bndmov %bnd2, (,%eax,1) bndmov %bnd1, 0x3(%ecx,%eax,1) bndmov %bnd0, %bnd2 ### bndcl bndcl (%ecx), %bnd1 bndcl %ecx, %bnd1 bndcl (0x399), %bnd1 bndcl 0x3(%edx), %bnd1 bndcl (%eax,%ecx), %bnd1 bndcl (,%ecx,1), %bnd1 bndcl 0x3(%ecx,%eax,1), %bnd1 ### bndcu bndcu (%ecx), %bnd1 bndcu %ecx, %bnd1 bndcu (0x399), %bnd1 bndcu 0x3(%edx), %bnd1 bndcu (%eax,%ecx), %bnd1 bndcu (,%ecx,1), %bnd1 bndcu 0x3(%ecx,%eax,1), %bnd1 ### bndcn bndcn (%ecx), %bnd1 bndcn %ecx, %bnd1 bndcn (0x399), %bnd1 bndcn 0x3(%edx), %bnd1 bndcn (%eax,%ecx), %bnd1 bndcn (,%ecx,1), %bnd1 bndcn 0x3(%ecx,%eax,1), %bnd1 ### bndstx bndstx %bnd0, 0x3(%eax,%ebx,1) bndstx %bnd2, 3(%ebx,%edx) bndstx %bnd2, 3(,%edx,1) bndstx %bnd3, 0x399(%edx) bndstx %bnd2, 0x1234(%ebx) bndstx %bnd2, 3(%ebx,1) bndstx %bnd1, (%edx) ### bndldx bndldx 0x3(%eax,%ebx,1), %bnd0 bndldx 3(%ebx,%edx), %bnd2 bndldx 3(,%edx,1), %bnd2 bndldx 0x399(%edx), %bnd3 bndldx 0x1234(%ebx), %bnd2 bndldx 3(%ebx,1), %bnd2 bndldx (%edx), %bnd1 ### bnd bnd call foo bnd call *(%eax) bnd je foo bnd jmp foo bnd jmp *(%ecx) bnd ret .intel_syntax noprefix bndmk bnd1, [eax] bndmk bnd1, [0x399] bndmk bnd1, [ecx+0x3] bndmk bnd1, [eax+ecx] bndmk bnd1, [ecx*1] bndmk bnd1, [edx+1*eax+0x3] ### bndmov bndmov bnd1, [eax] bndmov bnd1, [0x399] bndmov bnd1, [ecx+0x3] bndmov bnd1, [eax+ecx] bndmov bnd1, [ecx*1] bndmov bnd1, [edx+1*eax+0x3] bndmov bnd0, bnd1 bndmov [eax], bnd1 bndmov [0x399], bnd1 bndmov [ecx+0x3], bnd1 bndmov [eax+ecx], bnd1 bndmov [ecx*1], bnd1 bndmov [edx+1*eax+0x3], bnd1 bndmov bnd1, bnd0 ### bndcl bndcl bnd1, [eax] bndcl bnd1, ecx bndcl bnd1, [0x399] bndcl bnd1, [ecx+0x3] bndcl bnd1, [eax+ecx] bndcl bnd1, [ecx*1] bndcl bnd1, [edx+1*eax+0x3] ### bndcu bndcu bnd1, [eax] bndcu bnd1, ecx bndcu bnd1, [0x399] bndcu bnd1, [ecx+0x3] bndcu bnd1, [eax+ecx] bndcu bnd1, [ecx*1] bndcu bnd1, [edx+1*eax+0x3] ### bndcn bndcn bnd1, [eax] bndcn bnd1, ecx bndcn bnd1, [0x399] bndcn bnd1, [ecx+0x3] bndcn bnd1, [eax+ecx] bndcn bnd1, [ecx*1] bndcn bnd1, [edx+1*eax+0x3] ### bndstx bndstx [eax+ebx*1+0x3], bnd0 bndstx [ebx+edx+3], bnd2 bndstx [ecx*1], bnd2 bndstx [edx+0x399], bnd3 bndstx [1*ebx+3], bnd2 bndstx [edx], bnd1 ### bndldx bndldx bnd0, [eax+ebx*1+0x3] bndldx bnd2, [ebx+edx+3] bndldx bnd2, [ecx*1] bndldx bnd3, [edx+0x399] bndldx bnd2, [1*ebx+3] bndldx bnd1, [edx] ### bnd bnd call foo bnd call eax bnd je foo bnd jmp foo bnd jmp ecx bnd ret foo: bnd ret bad: # bndldx (%eax),(bad) .byte 0x0f .byte 0x1a .byte 0x30 # bndmov (bad),%bnd0 .byte 0x66 .byte 0x0f .byte 0x1a .byte 0xc4