2012-01-17 59 views
10

Guardando l'istruzioni AVR set ci sono quattro istruzioni aggiunte nel 2010Maggiori dettagli sulle nuove istruzioni AVR LAC, LAS, LAT e XCH

LAC load and clear 
LAS load and set 
LAT load and toggle 
XCH load and exchange 
  1. Qualcuno sa che cosa chip hanno queste istruzioni

  2. quali strumenti supportano queste istruzioni

  3. Maggiori informazioni su ciò che fanno

    (Z) < - v Rd (Z), Rd < - (Z)

fa che implicano che Rd e (Z) ottengono lo stesso valore o fa Rd ottenere il valore pre-modificata cosa era indicato da Z?

+0

Fa eXCHange Rd e il valore indicato da Z, ovviamente. –

+0

Alcuni forum suggeriscono che sono probabilmente disponibili solo nella [serie XMEGA di microcontrollori AVR] (http://www.atmel.com/dyn/products/devices.asp?category_id=163&family_id=607&subfamily_id=1965). –

+0

non ancora evidenti, i documenti xmega non mostrano le istruzioni nella lista.il più recente ha avuto il suo ultimo aggiornamento prima che il manuale del set di istruzioni fosse aggiunto. –

risposta

4

Questi probabilmente non sono in circolazione (come da domanda iniziale), ma tutti hanno un tema comune: le operazioni di memoria atomica. Il loro scopo è tipicamente quello di sincronizzare i thread e la loro inclusione a livello di set di istruzioni probabilmente indica che Atmel sta pianificando di lanciare un chip AVR multi-core. Dal momento che sono stati specificati, i fornitori di strumenti possono aggiungerli già agli assemblatori, ma non ne faranno granché finché i chip non avranno le istruzioni. (Edit: Come si è visto, l'altro core è la periferica USB, non una CPU Grazie a avakar di tali informazioni..)

Il comportamento, come ho letto dal Atmel AVR 8-bit Instruction Set Manual:

LAC - Carico e Clear, carica il contenuto della memoria * Z nel registro Rd mentre simultaneamente cancella i bit in * Z che sono stati impostati in Rd.

LAS - Carica e imposta contemporaneamente i bit in una posizione di memoria che sono stati impostati in un registro e carica il registro con i contenuti precedenti della posizione di memoria. Molto utile per i mutex a bit singolo, ad esempio.

LAT - Carica e attiva; come LAS, ma invece di bit o, usa bit xor bit, quindi commutando bit.

XCH - Scambio; semplicemente scambia la memoria e registra i contenuti.

Tutte sono istruzioni di accesso alla RAM (gli stati di riferimento 07/2014 eseguono due cicli), che combinano le operazioni in modo che possano anche rendere il codice che richiede una RAM più veloce di quanto non sia attualmente.

+0

questi documenti avr che ho utilizzato ultimamente, sia per il mio simulatore di istruzioni che per la programmazione di xmega via pdi, sono carichi di refusi e altri errori. Presumo che il lac sia mancante ", Rd <- (Z)" alla fine della definizione. È diventata una curiosità quando stavo realizzando un simulatore di istruzioni. –

+0

AVR multi-core? Sarebbe fantastico. –

+3

Temo che le istruzioni non siano state aggiunte per un altro core della CPU, ma piuttosto per la periferica USB, che utilizza SRAM per archiviare i registri di controllo/stato degli endpoint. Le istruzioni mancano nei primi modelli A e D, ma sono presenti in AU e versioni più recenti. – avakar

0

Piccoli ma importanti dettagli da sottolineare: le istruzioni LAS, LAC e LAT funzionano quando Z indica solo la "reale" SRAM. Questo non è (registri mappati in memoria), ecc. In effetti, questi sono utili sia per i propri dati (OS) che per il modulo XMega USB, senza altre periferiche e moduli.

È un peccato (come sarebbe molto utile per manipolare i flag PMIC.CTRL ad esempio), ma in realtà non funziona. Provato. Sembra che LAS, LAC e LAT abbiano lo stesso effetto di XCH (scambio tra Rd e (Z) ma nessun bit che gira) quando applicati su registri mappati in memoria.