Skip to content
HarryBroeders edited this page Jul 4, 2022 · 18 revisions

LEGv7 Pinky instructieset

De LEGv7 Pinky instructieset is een kleine subset van de ARMv7 16-bit Thumb instructieset. Programma's geschreven in LEGv7 Pinky kunnen geassembleerd worden in de STM32Cube IDE met de daarin aanwezige GNU assembler en uitgevoerd worden op een STM32. Alle instructies in deze instructieset eindigen op .N dit zorgt ervoor dat de assembler een foutmelding geeft als de instructie niet in 16 bits past. De instructie CMP.N en alle instructies die eindigen op S.N werken de flags in het CPSR register bij. De overige instructies werken de flags niet bij.

Registers

Alleen de registers R0 t/m R7 en SP, LR, PC en CPSR zijn bruikbaar in de ARMv7 16-bit Thumb instructieset. Regsisters R8 t/m R12 kunnen dus niet gebruikt worden. De encoding van de ARMv7 16-bit Thumb instructieset kun je vinden op p. 129 van de Arm v7-M Architecture Reference Manual: https://documentation-service.arm.com/static/606dc36485368c4c2b1bf62f#page=129.

De LEGv7 Pinlky instructieset bevat 32 instructies ingedeeld in de volgende instructiegroepen:

Rekenkundige berekeningen

Logische bewerkingen

Schuif-bewerkingen

Kopiëren

Vergelijken met nul en spring voorwaarts

Vergelijken en springen als ...

  • CMP.N <Rn>, <Rm> Compare (register)

  • CMP.N <Rn>, #<imm8> Compare (8-bit immediate)

  • B<c>.N <label> Branch <c> = conditie:

    • EQ Equal, Z == 1
    • NE Not Equal, Z == 0
    • CS (HS) Carry Set (unsigned Higher or Same), C == 1
    • CC (LO) Carry Clear (unsigned LOwer), C == 0
    • MI MInus, N == 1
    • PL PLus, N == 0
    • VS Overflow Set, V == 1
    • VC Overflow Clear, V == 0
    • HI unsigned HIgher, C == 1 and Z == 0
    • LS unsigned Lower or Same, C == 0 or Z == 1
    • GE signed Greater than or Equal, N == V
    • LT signed Less Than, N != V
    • GT signed Greater Than, Z == 0 and N == V
    • LE signed Less than or Equal, Z == 1 or N != V
    • None (AL) Always (unconditional)

Lezen en schrijven in het geheugen

Doe niets

Spring naar subroutine en return

Stack bewerkingen

Clone this wiki locally