Sida 5 av 9

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

Postat: 18 oktober 2012, 17:24:12
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...

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

Postat: 21 oktober 2012, 19:03:27
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?

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

Postat: 21 oktober 2012, 19:13:35
av sodjan
> Funkar det i FLASHROM?

Nej.

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

Nej.

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

Postat: 21 oktober 2012, 20:59:09
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.

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

Postat: 21 oktober 2012, 21:42:21
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.

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

Postat: 21 oktober 2012, 22:04:48
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?

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

Postat: 21 oktober 2012, 22:12:03
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.

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

Postat: 21 oktober 2012, 22:13:26
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.

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

Postat: 21 oktober 2012, 22:20:20
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.

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

Postat: 21 oktober 2012, 22:38:27
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?

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

Postat: 21 oktober 2012, 22:58:05
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.

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

Postat: 21 oktober 2012, 23:00:55
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å?

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

Postat: 21 oktober 2012, 23:12:34
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.

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

Postat: 21 oktober 2012, 23:13:28
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

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

Postat: 22 oktober 2012, 01:09:10
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.