From 5de7477dd28b9b3205be784da09893a01171f4df Mon Sep 17 00:00:00 2001 From: evgenyk <you@example.com> Date: Wed, 12 Mar 2025 23:16:08 +0000 Subject: [PATCH] my first try --- .counter.S.swo | Bin 0 -> 12288 bytes .gdb_history | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ Makefile | 2 +- counter | Bin 0 -> 5620 bytes counter.S | 48 +++++++++++++++++------------------------------- counter.bin | Bin 0 -> 4158 bytes counter.lst | 22 ++++++++++++++++++++++ 7 files changed, 88 insertions(+), 32 deletions(-) create mode 100644 .counter.S.swo create mode 100644 .gdb_history create mode 100755 counter create mode 100755 counter.bin create mode 100644 counter.lst diff --git a/.counter.S.swo b/.counter.S.swo new file mode 100644 index 0000000000000000000000000000000000000000..d0baff0a103f2e14b92440b81dbe7bd04eaf2e98 GIT binary patch literal 12288 zcmeI2y>1gh5XUz(Gz1X5zz`R)rC{%!Lqbv}AQ1_q@L8cmdv|N+$ldO-w^p1W!80Jy z(oj+G22dc;(b52~0HK5m#O&VLfhY<RN&(W0^w;`kXJ%)9dyQpB{LacXSZD_f?KETG z&cE$%uon}rk25wXrE%^*S$LtF%+7a{xoCF&u-J#LU}sC4%}yM2Vm(k+n)c1ZQfQ9| z5P>5jFv+@Mz+Jh<)HyhN=Jt_Qrb0x32oM1xKm>>Y5g-CYfC&8i1Z*+E9$}lu>Q<p% zC-$xNBP~RL2oM1xKm>>Y5g-CYfCvx)B0vO)z<)?UB#hlU!PsY%`~4s48NQxk>;vjK z>Iv!rY6n%IV$^liD(VVq8TI2NW8YElQSVUCP)|{hQI}9(CK=mBeMG%My+XZ2m8fOZ z5^4^$TlezG^+QGkhyW2F0z`la5CI}U1c(3;_*(*iCL<%oru($t8gN-9P#E1eB8R3n zfd5wpp+F8(3*~lcWe%~(vKC9UlIw*@m0iTIOlbG&V&1o&X<gI~Xuu6wNMXTlNN^j> z?T92v-D<-bufRQcYru+%jm)L8P-r|s8nD`DD><|fZwMn|^i~H4i>ywpYT5t`q5|)Z zlmy#F4@Xb0%82BBpW*yF(&!o3n+CAmmEPVNkd{6Mnre_`fT!lE5>}hmOhsipP!<iw zRe95ftx;E4@v0VyA0XPc5}M-)TF^5(cYPaKmXIn$!S)DNlleI^4-0YOWPHfEE8giq zmc~0O-GnW?8&RZE!E`?D6MoOa>G^Oztg}QJr>T#uqJ;BTS5YE$sbX1qe(8MFqwc{t z2JZ&%C1fs`tz!pf^ft8nnT|53e15+zvb3+D3T|7xNXBr018fZr*jQtuQx~CK^*^;F lW1Zvs39J5%6?u-g<II@5eCmKAe0Y&_9`G=(T1tc!>?b<^0BisN literal 0 HcmV?d00001 diff --git a/.gdb_history b/.gdb_history new file mode 100644 index 0000000..249842e --- /dev/null +++ b/.gdb_history @@ -0,0 +1,48 @@ +target extended-remote :3333 +dashboard -layout registers +file counter +load +si +exot +exit +target extended-remote :3333 +dashboard -layout registers +file counter +C +exit +target extended-remote :3333 +exit +target extended-remote :3333 +dashboard -layout registers +file counter +load +si +erxitC +exit +target extended-remote :3333 +dashboard -layout registers +file counter +loadf +load +si +exit +target extended-remote :3333 +exit +target extended-remote :3333 +dashboard -layout registers memory +file counter +load +si +exit +target extended-remote :3333 +dashboard -layout registers memory +file counter +load +si +load +si +si +load +si +xit +exit diff --git a/Makefile b/Makefile index bcf2937..d8a1736 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,6 @@ clean:: rm -f $(PROG) *.o *.lst *.bin *.srec TOP=.. -include $(TOP)/Make.rules +include make/Make.rules LDFLAGS+=-Wl,--no-relax diff --git a/counter b/counter new file mode 100755 index 0000000000000000000000000000000000000000..782d6a0bbf1118cd0c994475872863c8bf89a368 GIT binary patch literal 5620 zcmeHLK~L0B5T0&#kwsV*7NdfOnm|NCc4g(_g}4YJiSA`F8V@#YDbTQNH*I%ijR`fL zJah2kkMKWu_b=!V@PP4XB7XDQw-my`gU3!XZ@!uN-s{V}z9yZ+wI`1hMIk8}`bDu9 zE+P1%6lIo3BbDZ8goa_My<C(th$ds0h2^>Z)s9aN3Az9-YmRxaoR4E6Y&Z^|bpXow zRMHBh6-X<PRv@iFT7k3zX$8^>q!majkX9hAKw5$STY-=Gzdw5aC3BR~21@v`SHG%c z4Hd|mcts_(gj|W-<8Oa_{Fp!OY1^jhc%~m{W?*_fs$Iu!Jjb`Xq>KXQyzafKQ*AHO z4R{%`RqhH12^S=S)u1_2L{jz(BEk?dH=#<Xj8XCGm@+=97N!cbg%bA<x?*0I=9!@= zzY8O5cm*iHv{)>oOlL+jqID7VFLJz>a8gzBgQTdLd={fBMn#NKB*NK5TyWrHY0K@j z0^2J$sIu$s+m()QdzII&w^y+iX}$hTt2MN0d8v9)`gAU~agl@^RO8MG_e3H;svu() zl{+s9QK?^B5mloOOP`@e9hHQCsgD_`G<eR>$2*9^S^9Z03@G=*Cwe7Hg^^K613=5B z@6W=YOZa@|3)iB25$i3(NAF1Ri&#&G4+(iF;^}qR2Z{Vk_(}dYe7PT<-#M3mdu~2i zma*~hdAnA2$+vNUEz72vgZ_Kkblo=Xxh==GNY{6ou4y#&w(Iaw&mhuRt!>uym9_Pa zx~{`tX*Be;`l`UD@9TbGcmd*PY4(;87^K^+EuymD+YbyAHt-_5D^Xw{1XLE>vbaTM zBM3al>;$%txNUZJbi*@RJEyMG+IIUX)Aa1F^qNk~mKYC^ki*!ehr0Z$Oo7PPNc7|Q zY;eHIyPJ&{x)t;It>iO-iauVP?!Qa75#XMojC1c$_6#{Dt}N{R1m^e)@H7Uo$hY+| zd^v|x2jI=b95ynynZO+X1l|OLSR~JcFEOV+gZC!pu#ve|jPJ&|`7xq9F=oR&)?RES zuK^x^(WFQo+vE*zgV#pzGUEI-<vL?4l!qp7{&zG>-ytT2*I~i*Gdu&|z7HZ34U+d4 DEjhWo literal 0 HcmV?d00001 diff --git a/counter.S b/counter.S index 1dc1e72..12342b5 100644 --- a/counter.S +++ b/counter.S @@ -1,41 +1,27 @@ - .data -// 0x8000102c -// x7 = PC+(imm <<() -// x7 = - -// = -// 0x8000 0000 + -// 0x8001 0000 -// = 0x8001 0000 - -// aupic x7, 1 - -sentence: .ascii "Become a Prograammermmmmmrr\0" -// ^ -// ^ + .data +sentence: .ascii "My fbbirbst btbry\0" // \0 to bajt zerowy czyli koniec zdania w asm, C = .text .align 2 .globl _start _start: - - la t2, sentence # Load the address of sentence into t2 - li t0, 0x72 // ascii 'm' - - li t1, 0x00 // licznik wystapien 'm' - -print_loop: - lbu t3, 0(t2) # Load the byte (character) from address in t2 - beq t3, zero, done_print # If character is zero (null terminator), exit loop +la t2, sentence +li t0, 0x62 //ascii "b" - bne t3, t0, 1f - addi t1, t1, 1 - 1: +li t1, 0x00 // licznik b w sentence - addi t2, t2, 1 # Increment pointer to the next character - j print_loop # Repeat the loop +loop: +lbu t3, 0(t2) // ladujemy do rejestra t3 adres 1 litery sentece +beq t3, zero, koniec # jezeli adres w sentence dojdzie do \0 czyli do konca programm sie skonczy -done_print: - ebreak # End program (or use an exit system call) +bne t3, t0, 1f // jezeli adres liczby nie jest "b" to prechodzi do 1f pomijanie przyrostu licznika. + addi t1, t1, 1 // dodajemy 1 do licznika liter b +1: + +addi t2, t2, 1 // Tutaj wskaźnik zostanie przesunięty do następnego znaku w linii +j loop // skok do poczatku petli + +koniec: + ebreak diff --git a/counter.bin b/counter.bin new file mode 100755 index 0000000000000000000000000000000000000000..e9f20646e7b7501ef276b511b01186433b6c52dd GIT binary patch literal 4158 zcmbO(%)l_Y`7qODCIvQOW(Ef4bIc6MTzm}4B5@4D%)&r9VTSw<_x}|$2r!I-(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85p9|FFW3Ta76nMFy(B??I;Nkx?m E0H3iD0{{R3 literal 0 HcmV?d00001 diff --git a/counter.lst b/counter.lst new file mode 100644 index 0000000..ec13842 --- /dev/null +++ b/counter.lst @@ -0,0 +1,22 @@ + +counter: file format elf32-littleriscv + + +Disassembly of section .text: + +80000000 <_start>: +80000000: 00001397 auipc x7,0x1 +80000004: 02c38393 addi x7,x7,44 # 8000102c <__DATA_BEGIN__> +80000008: 06200293 addi x5,x0,98 +8000000c: 00000313 addi x6,x0,0 + +80000010 <loop>: +80000010: 0003ce03 lbu x28,0(x7) +80000014: 000e0a63 beq x28,x0,80000028 <koniec> +80000018: 005e1463 bne x28,x5,80000020 <loop+0x10> +8000001c: 00130313 addi x6,x6,1 +80000020: 00138393 addi x7,x7,1 +80000024: fedff06f jal x0,80000010 <loop> + +80000028 <koniec>: +80000028: 00100073 ebreak