17. februar 2001 - 17:36Der er
4 kommentarer og 1 løsning
Assembler
Jeg har fået til opgave i et kursus om operativsyster, at lave et program i C med en funktion, der skal laves i assembler.
Problemet er at jeg er fuldstændig blank når det kommer til assembler, så jeg søger derfor manualer, tutorials eller lignende, der kan hjælpe mig i gang.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Vi har dog fået en reference til 386-arkitekturen, men det er også en ret simpel funktion vi skal lave.
add\'e tre tal og returnere overflowet. Men jeg kunne godt bruge lidt generel viden om assembler programmering. Der må da være nogle generelle retningslinier på tværs af processorer - eller hvad ?
.file \"addlong.c\" .version \"01.01\" gcc2_compiled.: .text .align 4 .globl addlong .type addlong,@function addlong: pushl %ebp #gemmer ebp på stakken movl %esp,%ebp #flytter sp til ebp pushl %ebx #lægger ebx på stakken movl 16(%ebp),%eax movl 8(%ebp),%edx movl 12(%ebp),%ecx addl %ecx,%edx movl 20(%ebp),%ebx addl %edx,%ebx movl %ebx,(%eax) movl CF, %eax #Denne linie har jeg selv tilføjet #Ideen med den sidste linie skulle være at returnere flaget CF, som #indeholder overflowet (så vidt jeg ved), men det compiler ikke :-(
movl 20(%ebp), %eax #lægger c_in over i eax test $1, %eax #Tester CF på første bit jz .NoCarryIn #Hopper hvis CF=0 => ZF=1 stc #Sætter CF=1
.NoCarryIn: movl 8(%ebp), %eax #lægger a ind i edx adcl 12(%ebp), %eax #lægger a+b+c_in(CF) ind i edx movl 16(%ebp), %edx #lægger *c over i edx movl %eax, (%edx) #lægger resultatet over i det c peger på
.Retur: movl $1, %eax #lægger 0 i eax(returværdien) jc .NoCarryOut #jumper hvis CF er sat (dermed ingen carry) movl $0, %eax #Hvis CF=1 sættes eax=1
.NoCarryOut: popl %ebp ret
.Lfe1: .size addlong,.Lfe1-addlong .ident \"GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.0)\"
Den skulle gerne tage og lægge parameter 1, 2 og 4 sammen, lægge det på den adresse som parameter 3 peger på og returnere Carry flaget.
En tanke............ Mangler der ikke en kategori for assembler ?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.