Var är det lämpligt att diskutera .asm kod?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av 1802 »

Wedge: Dimman har inte lättat helt, men med din och andras hjälp är den på god väg.

Nu böjar det bli dax att skriva på loopen, och köra fler minnes adresser till min rutin. Kanske i en ny tråd. Där ROL inte kommer att anv eller...
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av 1802 »

Här kommer lite mer till programmet MemBitBlink.

Kod: Markera allt

;SelfMod,a65
;Smidig när man har ont om register
 .org $1000

 LDX #$10     ; Startadress high byte
 LDY #$ff     ; Startadress low byte
 
Loop:         ;Yttre loop

ILoop:        ; Innre loop
 LDA $1000    ; Denna rad modifieras av nedan  LDA$0000 funkar ej
              ; i simulatorn
; JSR aslbit
 INY
 STY $1005    ; FARLIG! modifiera/öka raden "LDA $1000"
 cpy #$40     ; Kör $40 som max i low byte
 BNE ILoop    ; Testa mot z flaggan
 
; JSR aslbit
 LDY#$ff      ; Nolla inre loop
 INX          ; Öka yttre loop  high byte
 STX $1006    ; FARLIG! modifiera/öka raden "LDA $1000"
 CPX #$12     ; Kör $12 som max för high
 BNE Loop     ; Testa mot z flaggan

end:
 JMP end      ; Avsluta

aslbit:
 RTS 
 .db "01234567890123456789Text lätt att hitta",0,0 
Går det att konv till avr? Ovan funkar inte i ROM. Funkar det i FLASHROM? Om inte går det att lägga en subrutin i AVR RAM?
Senast redigerad av 1802 21 oktober 2012, 20:38:57, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av sodjan »

> Funkar det i FLASHROM?

Nej.

> Om inte går det att lägga en subrutin i AVR RAM?

Nej.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av Kaggen »

ROM = Read *Only* Memory (Enbart Läs Minne). Funkar inte att modifiera programkod via programkod i ROM. Självmodifierande kod slutade man använda någon gång på 80-talet iomed att cache minne introducerades i de flesta processorerna.

Det skulle teoretiskt funka i flashminne för de uC som stödjer flashning av programminnet via kod, men det skulle behövas skrivas en rutin som flashade om minnet för enbart den instruktionen och det skulle vara mer besvär och så stor prestandaförlust att det är totalt meningslöst.

Du får anpassa delar av den koden för microcontrollers utan självmodifierande kod.

Vad gör egentligen MemBitBlink? Varför måste du porta 6502 kod till AVR? Är det inte enklare att skriva från början?

Du försöker porta kod, som demonstrerar hur man undviker en begränsning med få register i 6502 arkitekturen via självmodifierande kod, till en helt annan arkitektur som har helt andra möjligheter och fler register. Vad är poängen?

Det är som om man har problem med liten pakethållare på cykeln, så man köper en lastbil och monterar på en större pakethållare på lastbilen.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av 1802 »

Koden skall anv på samtliga av mina pryttlar, C64 x86 avr pic z80 och kanske fler. Men jag får nog hitta en annan variant till AVR. Kul att höra att det går(i flash), men onödigt omständigt. Går det inte att lägga en subrutin i AVR ram? Känns ju som hela vitsen med RAM, att den går att ändra i.

Jag hittade en memorymap ATMega81515MM.jpg . Memory Map Small.jpg (JPEG-bild, 612 × 348 pixlar) - Skalad (93%) Nån som har en till ATMega16u4? Alla 3 på samma bild.
Användarvisningsbild
säter
Inlägg: 35304
Blev medlem: 22 februari 2009, 21:16:35
Ort: Säter

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av säter »

Jag, som är rudis, brukar följa alla nybörjartrådar om microcontrollers, i hopp om det ska klarna lite allt efter som.
Men det här var en väldigt rörig tråd, som jag har svårt att förstå.

#Koden skall anv på samtliga av mina pryttlar, C64 x86 avr pic z80 och kanske fler.#

Kan man använda samma asemblerkod till olika processorer?
Det trodde jag var omöjligt. :humm:

Programmet "MemBitBlink", vad ska det utföra för något?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46978
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av TomasL »

Kan man använda samma asemblerkod till olika processorer?
Nej det kan man inte.
Det trodde jag var omöjligt.
Du har rätt, Det är en omöjlighet.
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av Icecap »

säter: du har i alla fall fattat något, det är ju bra att någon gör det här... Och du har alldeles rätt i att ASM bara gäller för en specifik processorfamilj, mnemonicen är specifika varför man har skapat högnivåspråk, just för att släppa förbi det problem.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46978
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av TomasL »

Går det inte att lägga en subrutin i AVR ram? Känns ju som hela vitsen med RAM, att den går att ändra i.
Du kan inte lägga kod där, samma gäller PIC, RAM är till för variabler, inget annat.
Dock, på PIC32 som är en MIPS-processor, kan man köra program från RAM, om man vill. Man kanske kan göra det på ARM-versionerna av AVR också.

Beträffande skriva till programminnet, gissar att AVR funkar på samma sätt som PIC, man raderar och skriver minnet i sektorer, raderar gör man i 64-bytes sektorer, skriver gör man i 8-bytes sektorer.
Proceduren är rätt omständig och tidskrävande.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av 1802 »

Exakt samma kod funkar inte mot alla CPU, men det är snarlikt. Typ olika dialekter. Så ser jag det.

säter: Läs hela tråden. Fråga sedan igen.

TomasL: Variabler. Det är ju precis det jag gör i SelfMod. För att undvika att andra processer pillar på dem ligger de i rutinens area. Borde gå att göra mot AVR RAM, men till ingen nytta. Så det får bli en annan taktik. Trycka upp register och flaggor i stacken. För att sedan återställa dem. Kan det vara något?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av sodjan »

Först frågade du :

> Om inte går det att lägga en subrutin i AVR RAM?

På vilket jag svarade ett tydligt "Nej".

Sen frågar du igen :

> Går det inte att lägga en subrutin i AVR ram?

V.v. förklara på ett enkelt sätt så jag förstår vad som var
otydligt med mitt första svar.

> Kul att höra att det går(i flash), men onödigt omständigt.

Med en oerhört speciell tolkning av "går". I praktiken går det inte alls.

Ett par andra saker...

> Självmodifierande kod slutade man använda någon gång på 80-talet...

Korrekt...

> ...iomed att cache minne introducerades i de flesta processorerna.

Har inte ett smack med det att göra! Det går aldeles utmärk att ha
självmodifierande kod helt oavsett om det finns cache eller inte, så klart.
Att det inte är lika vanligt idag (men inte helt borta) beror på helt andra
saker, bl.a säkerhetsrellaterade.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46978
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av TomasL »

Exakt samma kod funkar inte mot alla CPU, men det är snarlikt. Typ olika dialekter. Så ser jag det.
Då ser du helt fel, det skiljer så mycket mellan olika processorer att det inte ens liknar varandra, eftersom ASM inte är ett språk, så kan det inte finnas dialekter.
En variabel kan inte ligga i programminne, då är det en konstant, per definition.
Trycka upp register och flaggor i stacken. För att sedan återställa dem. Kan det vara något?
Vara till vadå?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av sodjan »

> ..eftersom ASM inte är ett språk, så kan det inte finnas dialekter.

Tomas, du brukar tjata om det där. :-)

Jag skulle kunna hålla med om att "maskinkod" inte är ett "språk", men att
påstå att en modern assembler, med allt vad de kan innehålla, inte är ett
"språk" är mest löjligt och tillför absolut ingenting till diskussionen.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av Swech »

En tråd så full med trollgodis var det länge sedan man såg....

1802 - Det verkar som du mest är interesserad av att vända och vrida på
allt och testa det mest omöjliga. Om det ramlar ut något som en sidoeffekt
så är du glad och lycklig över detta.
Lite mcgyver som bygger granater av grankottar och en gammal socka.

Swech
gkar
Inlägg: 1585
Blev medlem: 31 oktober 2011, 15:28:29
Ort: Linköping

Re: Var är det lämpligt att diskutera .asm kod?

Inlägg av gkar »

lea msg(pc),a0
move.l (sp),a1
.lp:
move.b (a0)+, (a1)+
bne.s .lp
dc.w $4e75

msg:dc.b "RCA 1802. Enligt Elfa, en mikroprocessor med 91 lättanvända instruktioner. Om de är lättanvända, tvistar de lärde. En knepig grunka, inte lik mycket annat. 68k är lite modernare", 0, $13, $37, $c0, $de, 33

Assembler är absolut ett språk med sina fördelar och nackdelar. Det har mer struktur, aningen outtalad, än bara mnemonics i sig.
Dock har det många dialekter.
Skriv svar