Új hozzászólás Aktív témák
-
Jester01
veterán
válasz
Gabee001 #238 üzenetére
64 bites gas assemblerrel pl. a következő egy megoldás lehet magára a konverzióra:
.text
.globl getroman
.type getroman, @function
getroman:
movq %rax, %rbx
movq $numbers, %rdx
LOOP1:
movq %cs:(%rdx), %rdi
or %rdi, %rdi
jnz OK
movb $'?', %al
jmp DONE
OK:
movq %rbx, %rsi
LOOP2:
movb (%rsi), %al
cmpb %cs:(%rdi), %al
je MATCH
addq $8, %rdx
jmp LOOP1
MATCH:
cmpb $'\n', %al
movb %cs:1(%rdi), %al
je DONE
incq %rsi
incq %rdi
jmp LOOP2
DONE:
ret
numbers:
.quad r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, 0
r1: .ascii "I\n1"
r2: .ascii "II\n2"
r3: .ascii "III\n3"
r4: .ascii "IV\n4"
r5: .ascii "V\n5"
r6: .ascii "VI\n6"
r7: .ascii "VII\n7"
r8: .ascii "VIII\n8"
r9: .ascii "IX\n9"
r10: .ascii "X\nA"A függvényt C-ből a char getroman(const char* s) formában lehet hívni. (Bemeneti pointer a rax regiszterben, kimeneti karakter az al regiszterben.) Alakítsd át igényeid szerint. A MATCH címke előtt van egy add utasítás, oda a megfelelő pointer méretet kell tenni. HTH.
Új hozzászólás Aktív témák
- PHILIPS Series 5500 LatteGo EP5549/70 - ÚJ, BONTATLAN!
- TP-Link TL-SG1024D Hálózati Switch
- Új DELL Inspiron 14 (5435)/AMD RYZEN 7-7730U/16GB/512 SSD/14"/FHD/IPS/Garancia
- Pénztárcabarát áron dobozos Acer Aspire 5/i5-1135G7/16GB/512 SSD/15.6"/FHD/IPS/Gari
- Latitude 5520 27% ÁFA 15.6" FHD IPS i7-1185G7 16GB 512GB NVMe IR kam gar