What do e_ and se_ mean/stand for?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

What do e_ and se_ mean/stand for?

3,078 Views
zacavins
Contributor I

What is the difference between instructions like addi and e_addi OR lwz and se_lwz? I am using previously developed assembly/C code and trying to make a project and build it using S32 design studio. I get errors on instructions like addi, and if I change it to e_addi, it will show no error. I am unsure what the e_ is for. Are there compiler options to change? Project settings? Does anyone know if there is any documentation for this? I have been unsuccessful at finding anything.

Labels (2)
Tags (2)
0 Kudos
2 Replies

2,204 Views
nxf65158
NXP Employee
NXP Employee

Thank you for this explanation and resources. So I guess se_ will be shorthand for `short enhanced` and e_ is `enhanced`.

Minh.DA
0 Kudos

2,327 Views
stanish
NXP Employee
NXP Employee

Hello,

There are basically 2 kinds of instruction sets for MPC5xxx - BookE and VLE. Some derivatives(cores) support both while the others just one of them (e.g MPC5554 is BookE only, MPC560x derivatives are VLE only)

  • original BookE - 32 bit fixed instruction opcodes (stw, add, bl...)

  • VLE(Variable-Length Encoding) extension - mixture of 16 and 32 bit instruction opcodes where 16 bit instructions start with prefix "se_" and 32bit instructions with "e_"

Which MPC derivative are you targeting?

not all instructions in BookE could be easily transformed into VLE form by adding "e_" or "se_"

e.g. ori instruction:

lis r11,0x4000 
ori r11,r11,0x0000 

=>

e_lis r11,0x4000

e_or2i r11,0x0000

16 bit VLE "se_" instructions typically uses just a reduced set of registers + they often share the same source and destination register.

As far as I know this translation BookE -> VLE is not available in GCC (S32DS) but you can use free Special edition version of CodeWarrior for MCU 10.7 to convert it.

Just create a new dummy project for any Qorivva MPC56xx device setup. Make sure the "Translate PPC Asm to VLE Asm (Zen)" option  is selected.

pastedImage_5.png

Add your function e.g. as an asm function and disassembly the file:

pastedImage_1.png

For better reading I'd suggest you to disable "Show Source Code" In project properties -> C/C++ Build -> Settings ->PowerPC Disassembler.

pastedImage_3.png

Hope it helps.

Stan