For Emacs: -*- coding: utf-8 -*- Obligatorisk oppgave 2 2017 Et tidspunkt på døgnet kan angis enten på en klokke med timer, minutter og sekunder (for eksempel 1:00:05, som er 5 sekunder etter klokken 1 om natten) eller bare som antall sekunder siden midnatt (for eksempel 3605, som er samme klokkeslett). Vi skal lage funksjoner som kan konvertere mellom de to formene; nærmere bestemt skal vi lage: 1. Funksjonen hms_to_sec skal regne om fra et klokkeslett med timer-minutter-sekunder til antall sekunder siden midnatt. Funksjonen har tre parametre: timene i klokkeslettet(i %RDI), minuttene i klokkeslettet (i %RSI) og sekundene i klokkeslettet (i %RDX). Svaret skal altså være antall sekunder siden midnatt (i %RAX). Eksempel: hms_to_sec(0,1,5) skal gi svaret 65. 2. Funksjonen sec_to_h skal regne om fra et gitt antall sekunder siden midnatt til et klokkeslett og så returnere timene i dette klokkeslettet. Funksjonenen har én parameter: sekundene siden midnatt. Svaret (i %RAX) skal alltid være 0-23. Eksempel: sec_to_h(65) skal gi svaret 0 siden sekundtallet 65 angir klokkeslettet 0:1:05. 3. Funksjonen sec_to_m skal regne om fra et gitt antall sekunder etter midnatt til et klokkeslett og så returnere minuttene i dette klokkeslettet; svaret skal alltid være i intervallet 0-59. Eksempel: sec_to_m(3750) skal gi svaret 2 siden sekundtallet 3750 angir klokkeslettet 1:02:30. Hint. I denne funksjonen må vi dele på 60 to ganger for å finne svaret. 4. Funksjonen sec_to_s skal regne om fra et gitt antall sekunder etter midnatt til et klokkeslett og så returnere sekundene i dette klokkeslettet; svaret skal alltid ligge i intervallet 0-59. Eksempel: sec_to_s(36002) skal gi svaret 2 siden sekundtallet 36002 angir klokkeslettet 10:00:02. Løsningen Denne oppgaven skal løses på Ifis Linux-maskiner. I mappen /ifi/bifrost/project5/in1020/oblig-2 ligger det to filer: sec.s med assemblerkode og et testprogram test-sec.c. Kopier disse to filene til din egen mappe og legg inn kode i filen sec.s. Du kan kjøre koden med de to kommandoene $ gcc -o test-sec test-sec.c sec.s $ ./test-sec Når koden din er riktig, skal dette testprogrammet skrive ut 12 ==> 00:00:12 ==> 12 65 ==> 00:01:05 ==> 65 3600 ==> 01:00:00 ==> 3600 3750 ==> 01:02:30 ==> 3750 36002 ==> 10:00:02 ==> 36002 (Det viser et tidspunkt først som sekunder siden midnatt, så som et klokkeslett og til sist som antall sekunder igjen.)