Summary information:

File:
Total number of instructions: 339
Number of instructions executed: 326
Number of instructions not executed: 9
Number of incomplete conditions: 4
Number of instructions skipped: 0
Coverage status: incomplete
VerOCode Analyzer version 2.1 - DEMO VERSION

Coverage results:

.
. C:/BrewDemo/Brewery/objPPC604gnucore/Output_Manager.o: file format elf32-powerpc
.
. Disassembly of section .text:
. * RETURNS:
. * N/A
. *
. */
. static void taskOutputManager (int arg1, ...) {
. * 00000000 <taskOutputManager> stwu r1,-128(r1)
. * 00000004 <taskOutputManager+4> mflr r0
. * 00000008 <taskOutputManager+8> stw r29,116(r1)
. * 0000000c <taskOutputManager+c> stw r30,120(r1)
. * 00000010 <taskOutputManager+10> stw r31,124(r1)
. * 00000014 <taskOutputManager+14> stw r0,132(r1)
. * 00000018 <taskOutputManager+18> stw r3,8(r1)
. * 0000001c <taskOutputManager+1c> stw r4,12(r1)
. * 00000020 <taskOutputManager+20> stw r5,16(r1)
. * 00000024 <taskOutputManager+24> stw r6,20(r1)
. * 00000028 <taskOutputManager+28> stw r7,24(r1)
. * 0000002c <taskOutputManager+2c> stw r8,28(r1)
. * 00000030 <taskOutputManager+30> stw r9,32(r1)
. * 00000034 <taskOutputManager+34> stw r10,36(r1)
. > 00000038 <taskOutputManager+38> bne cr1,00000060 <taskOutputManager+60>
. - 0000003c <taskOutputManager+3c> stfd f1,40(r1)
. - 00000040 <taskOutputManager+40> stfd f2,48(r1)
. - 00000044 <taskOutputManager+44> stfd f3,56(r1)
. - 00000048 <taskOutputManager+48> stfd f4,64(r1)
. - 0000004c <taskOutputManager+4c> stfd f5,72(r1)
. - 00000050 <taskOutputManager+50> stfd f6,80(r1)
. - 00000054 <taskOutputManager+54> stfd f7,88(r1)
. - 00000058 <taskOutputManager+58> stfd f8,96(r1)
. - 0000005c <taskOutputManager+5c> stfd f9,104(r1)
. while (TRUE) {
. * 00000060 <taskOutputManager+60> lis r29,4
. * 00000064 <taskOutputManager+64> lis r31,8
. * 00000068 <taskOutputManager+68> lis r30,136
. lastMsgLen = msgQReceive(msgQIdOutput,lastMsgBuf,MAX_IO_OUT_BUFFER_LENGTH, WAIT_FOREVER);
. * 0000006c <taskOutputManager+6c> addi r4,r31,8
. * 00000070 <taskOutputManager+70> li r5,128
. * 00000074 <taskOutputManager+74> lwz r3,4(r29)
. * 00000078 <taskOutputManager+78> li r6,-1
. * 0000007c <taskOutputManager+7c> bl 0000007c <taskOutputManager+7c>
. if ((lastMsgLen!=ERROR)&&(lastMsgLen>0)) {
. * 00000080 <taskOutputManager+80> not r9,r3
. * 00000084 <taskOutputManager+84> addic r0,r9,-1
. * 00000088 <taskOutputManager+88> subfe r9,r0,r9
. * 0000008c <taskOutputManager+8c> srawi r0,r3,31
. * 00000090 <taskOutputManager+90> subf r0,r3,r0
. * 00000094 <taskOutputManager+94> rlwinm r0,r0,1,31,31
. * 00000098 <taskOutputManager+98> and. r11,r9,r0
. * 0000009c <taskOutputManager+9c> stw r3,136(r30)
. < 000000a0 <taskOutputManager+a0> beq 0000006c <taskOutputManager+6c>
. switch (lastMsgBuf[0]) {
. * 000000a4 <taskOutputManager+a4> lbz r0,8(r31)
. * 000000a8 <taskOutputManager+a8> cmpwi cr1,r0,7
. * 000000ac <taskOutputManager+ac> beq cr1,000000bc <taskOutputManager+bc>
. * 000000b0 <taskOutputManager+b0> cmpwi cr1,r0,10
. * 000000b4 <taskOutputManager+b4> beq cr1,000000c4 <taskOutputManager+c4>
. * 000000b8 <taskOutputManager+b8> b 000000cc <taskOutputManager+cc>
. case MSG_ALARM: ioSoundAlarm(); break;
. * 000000bc <taskOutputManager+bc> bl 000000bc <taskOutputManager+bc>
. * 000000c0 <taskOutputManager+c0> b 0000006c <taskOutputManager+6c>
. case MSG_EOL : ioOutputEOL(); break;
. * 000000c4 <taskOutputManager+c4> bl 000000c4 <taskOutputManager+c4>
. * 000000c8 <taskOutputManager+c8> b 0000006c <taskOutputManager+6c>
. default : ioOutputBuffer(lastMsgBuf,lastMsgLen);
. * 000000cc <taskOutputManager+cc> lwz r4,136(r30)
. * 000000d0 <taskOutputManager+d0> addi r3,r31,8
. * 000000d4 <taskOutputManager+d4> bl 000000d4 <taskOutputManager+d4>
. }
. }
. }
. * 000000d8 <taskOutputManager+d8> b 0000006c <taskOutputManager+6c>
. }
.
.
. /*******************************************************************************
. *
. * strlen - get string length
. *
. * This routine returns the number if non-zero characters in
. * the null-terminated string pointed to by <s>.
. *
. * RETURNS:
. * Positive integer or 0 when empty string.
. *
. */
. static int strlen(char *s) {
. int i = 0;
. while (s[i++]);
. * 000000dc <strlen> lbz r0,0(r3)
. * 000000e0 <strlen+4> cmpwi cr1,r0,0
. * 000000e4 <strlen+8> li r9,1
. < 000000e8 <strlen+c> beq cr1,000000fc <strlen+20>
. * 000000ec <strlen+10> lbzx r0,r3,r9
. * 000000f0 <strlen+14> cmpwi cr1,r0,0
. * 000000f4 <strlen+18> addi r9,r9,1
. * 000000f8 <strlen+1c> bne cr1,000000ec <strlen+10>
. return i-1;
. * 000000fc <strlen+20> addi r3,r9,-1
. }
. * 00000100 <strlen+24> blr
.
.
. /*******************************************************************************
. *
. * spawnOutputManager - spawn Output Manager task
. *
. * This routine spawns Output Manager task, creates its message queue and
. * returns the task's ID.
. *
. * RETURNS:
. * Task_id or ERROR in case of any problem.
. *
. */
. int spawnOutputManager (void) {
. * 00000104 <spawnOutputManager> stwu r1,-56(r1)
. * 00000108 <spawnOutputManager+4> mflr r0
. * 0000010c <spawnOutputManager+8> stw r29,44(r1)
. * 00000110 <spawnOutputManager+c> stw r30,48(r1)
. * 00000114 <spawnOutputManager+10> stw r31,52(r1)
. * 00000118 <spawnOutputManager+14> stw r0,60(r1)
. msgQIdOutput = msgQCreate( 100, /* max messages that can be queued */
. * 0000011c <spawnOutputManager+18> li r3,100
. * 00000120 <spawnOutputManager+1c> li r4,128
. * 00000124 <spawnOutputManager+20> li r5,0
. * 00000128 <spawnOutputManager+24> bl 00000128 <spawnOutputManager+24>
. * 0000012c <spawnOutputManager+28> lis r29,4
. * 00000130 <spawnOutputManager+2c> stw r3,4(r29)
. MAX_IO_OUT_BUFFER_LENGTH,/* max bytes in a message */
. MSG_Q_FIFO);
. tidOutputManager = taskSpawn("taskOutputManager", EQUAL_PRIORITY, 0, 4096,
. * 00000134 <spawnOutputManager+30> li r0,0
. * 00000138 <spawnOutputManager+34> stw r0,8(r1)
. * 0000013c <spawnOutputManager+38> stw r0,12(r1)
. * 00000140 <spawnOutputManager+3c> stw r0,16(r1)
. * 00000144 <spawnOutputManager+40> stw r0,20(r1)
. * 00000148 <spawnOutputManager+44> stw r0,24(r1)
. * 0000014c <spawnOutputManager+48> stw r0,28(r1)
. * 00000150 <spawnOutputManager+4c> stw r0,32(r1)
. * 00000154 <spawnOutputManager+50> lis r3,0
. * 00000158 <spawnOutputManager+54> addi r3,r3,0
. * 0000015c <spawnOutputManager+58> li r4,5
. * 00000160 <spawnOutputManager+5c> li r5,0
. * 00000164 <spawnOutputManager+60> li r6,4096
. * 00000168 <spawnOutputManager+64> lis r7,0
. * 0000016c <spawnOutputManager+68> addi r7,r7,0
. * 00000170 <spawnOutputManager+6c> li r8,0
. * 00000174 <spawnOutputManager+70> li r9,0
. * 00000178 <spawnOutputManager+74> li r10,0
. * 0000017c <spawnOutputManager+78> bl 0000017c <spawnOutputManager+78>
. (FUNCPTR) taskOutputManager,0,0,0,0,0,0,0,0,0,0);
. if ((msgQIdOutput==NULL)||(tidOutputManager==ERROR)) {
. * 00000180 <spawnOutputManager+7c> lwz r0,4(r29)
. * 00000184 <spawnOutputManager+80> cmpwi cr1,r0,0
. * 00000188 <spawnOutputManager+84> lis r9,0
. * 0000018c <spawnOutputManager+88> stw r3,0(r9)
. * 00000190 <spawnOutputManager+8c> beq cr1,0000019c <spawnOutputManager+98>
. * 00000194 <spawnOutputManager+90> cmpwi cr1,r3,-1
. * 00000198 <spawnOutputManager+94> bne cr1,000001a0 <spawnOutputManager+9c>
. return ERROR;
. * 0000019c <spawnOutputManager+98> li r3,-1
. } else {
. return tidOutputManager;
. * 000001a0 <spawnOutputManager+9c> lwz r0,60(r1)
. * 000001a4 <spawnOutputManager+a0> mtlr r0
. * 000001a8 <spawnOutputManager+a4> lwz r29,44(r1)
. * 000001ac <spawnOutputManager+a8> lwz r30,48(r1)
. * 000001b0 <spawnOutputManager+ac> lwz r31,52(r1)
. * 000001b4 <spawnOutputManager+b0> addi r1,r1,56
. * 000001b8 <spawnOutputManager+b4> blr
. }
. }
.
.
. /*******************************************************************************
. *
. * outputAlarm - output alarm signal (non-blocking)
. *
. * This routine sends the alarm message to the output queue with the URGENT flag.
. * It is non-blocking; if message cannot be sent immediately, it will be skipped.
. *
. * RETURNS:
. * N/A
. *
. */
. void outputAlarm(void) {
. * 000001bc <outputAlarm> stwu r1,-16(r1)
. * 000001c0 <outputAlarm+4> mflr r0
. * 000001c4 <outputAlarm+8> stw r0,20(r1)
. char c = MSG_ALARM;
. * 000001c8 <outputAlarm+c> li r0,7
. * 000001cc <outputAlarm+10> stb r0,8(r1)
. msgQSend(msgQIdOutput,&c,1,NO_WAIT,MSG_PRI_URGENT);
. * 000001d0 <outputAlarm+14> lis r9,4
. * 000001d4 <outputAlarm+18> addi r4,r1,8
. * 000001d8 <outputAlarm+1c> li r5,1
. * 000001dc <outputAlarm+20> li r6,0
. * 000001e0 <outputAlarm+24> lwz r3,4(r9)
. * 000001e4 <outputAlarm+28> li r7,1
. * 000001e8 <outputAlarm+2c> bl 000001e8 <outputAlarm+2c>
. }
. * 000001ec <outputAlarm+30> lwz r0,20(r1)
. * 000001f0 <outputAlarm+34> mtlr r0
. * 000001f4 <outputAlarm+38> addi r1,r1,16
. * 000001f8 <outputAlarm+3c> blr
.
.
. /*******************************************************************************
. *
. * outputBuffer - output buffer (blocking)
. *
. * This routine sends first <len> characters of a buffer pointed to by <buf>.
. * It blocks calling task as long as the characters are sucessfully sent to
. * the output message queue.
. *
. * RETURNS:
. * N/A
. *
. */
. void outputBuffer(char *buf, int len) {
. * 000001fc <outputBuffer> stwu r1,-8(r1)
. * 00000200 <outputBuffer+4> mflr r0
. * 00000204 <outputBuffer+8> stw r0,12(r1)
. * 00000208 <outputBuffer+c> mr r11,r3
. * 0000020c <outputBuffer+10> mr r5,r4
. msgQSend(msgQIdOutput,buf,
. * 00000210 <outputBuffer+14> lis r9,4
. * 00000214 <outputBuffer+18> mr r4,r11
. * 00000218 <outputBuffer+1c> cmpwi cr1,r5,129
. * 0000021c <outputBuffer+20> li r6,-1
. * 00000220 <outputBuffer+24> li r7,0
. * 00000224 <outputBuffer+28> lwz r3,4(r9)
. * 00000228 <outputBuffer+2c> mfcr r0
. * 0000022c <outputBuffer+30> rlwinm r0,r0,5,31,31
. * 00000230 <outputBuffer+34> neg r0,r0
. * 00000234 <outputBuffer+38> not r9,r0
. * 00000238 <outputBuffer+3c> rlwinm r9,r9,0,24,24
. * 0000023c <outputBuffer+40> and r5,r5,r0
. * 00000240 <outputBuffer+44> or r5,r5,r9
. * 00000244 <outputBuffer+48> bl 00000244 <outputBuffer+48>
. * 00000248 <outputBuffer+4c> lwz r0,12(r1)
. * 0000024c <outputBuffer+50> mtlr r0
. * 00000250 <outputBuffer+54> addi r1,r1,8
. * 00000254 <outputBuffer+58> blr
. (len<=MAX_IO_OUT_BUFFER_LENGTH)?len:MAX_IO_OUT_BUFFER_LENGTH,
. WAIT_FOREVER,MSG_PRI_NORMAL);
. }
.
.
. /*******************************************************************************
. *
. * outputString - output string (blocking)
. *
. * This routine sends to the queue a null-terminated string pointed to by <s>.
. * The NULL character is not sent.
. * The procedure blocks calling task as long as the characters are sucessfully
. * sent to the output message queue.
. *
. * RETURNS:
. * N/A
. *
. */
. void outputString(char *s) {
. * 00000258 <outputString> stwu r1,-24(r1)
. * 0000025c <outputString+4> mflr r0
. * 00000260 <outputString+8> stw r29,12(r1)
. * 00000264 <outputString+c> stw r30,16(r1)
. * 00000268 <outputString+10> stw r31,20(r1)
. * 0000026c <outputString+14> stw r0,28(r1)
. * 00000270 <outputString+18> mr r29,r3
. outputBuffer(s,strlen(s));
. * 00000274 <outputString+1c> bl 000000dc <strlen>
. * 00000278 <outputString+20> mr r4,r3
. * 0000027c <outputString+24> mr r3,r29
. * 00000280 <outputString+28> bl 000001fc <outputBuffer>
. * 00000284 <outputString+2c> lwz r0,28(r1)
. * 00000288 <outputString+30> mtlr r0
. * 0000028c <outputString+34> lwz r29,12(r1)
. * 00000290 <outputString+38> lwz r30,16(r1)
. * 00000294 <outputString+3c> lwz r31,20(r1)
. * 00000298 <outputString+40> addi r1,r1,24
. * 0000029c <outputString+44> blr
. }
.
.
. /*******************************************************************************
. *
. * outputLine - output line (blocking)
. *
. * This routine sends to the queue a null-terminated string pointed to by <line>.
. * (the NULL character is not sent). After that it sends another message to force
. * the Output task to output the EOL character whatever it is.
. * The procedure blocks calling task as long as the characters are sucessfully
. * sent to the output message queue.
. *
. * RETURNS:
. * N/A
. *
. */
. void outputLine(char *line) {
. * 000002a0 <outputLine> stwu r1,-32(r1)
. * 000002a4 <outputLine+4> mflr r0
. * 000002a8 <outputLine+8> stw r29,20(r1)
. * 000002ac <outputLine+c> stw r30,24(r1)
. * 000002b0 <outputLine+10> stw r31,28(r1)
. * 000002b4 <outputLine+14> stw r0,36(r1)
. * 000002b8 <outputLine+18> mr r29,r3
. char c = MSG_EOL;
. * 000002bc <outputLine+1c> li r0,10
. * 000002c0 <outputLine+20> stb r0,8(r1)
. outputBuffer(line,strlen(line));
. * 000002c4 <outputLine+24> bl 000000dc <strlen>
. * 000002c8 <outputLine+28> mr r4,r3
. * 000002cc <outputLine+2c> mr r3,r29
. * 000002d0 <outputLine+30> bl 000001fc <outputBuffer>
. msgQSend(msgQIdOutput,&c,1,WAIT_FOREVER,MSG_PRI_NORMAL);
. * 000002d4 <outputLine+34> addi r4,r1,8
. * 000002d8 <outputLine+38> lis r9,4
. * 000002dc <outputLine+3c> li r5,1
. * 000002e0 <outputLine+40> li r6,-1
. * 000002e4 <outputLine+44> lwz r3,4(r9)
. * 000002e8 <outputLine+48> li r7,0
. * 000002ec <outputLine+4c> bl 000002ec <outputLine+4c>
. }
. * 000002f0 <outputLine+50> lwz r0,36(r1)
. * 000002f4 <outputLine+54> mtlr r0
. * 000002f8 <outputLine+58> lwz r29,20(r1)
. * 000002fc <outputLine+5c> lwz r30,24(r1)
. * 00000300 <outputLine+60> lwz r31,28(r1)
. * 00000304 <outputLine+64> addi r1,r1,32
. * 00000308 <outputLine+68> blr
.
.
. /*******************************************************************************
. *
. * outputChar - output one character (blocking)
. *
. * This routine sends to the queue the <c> character.
. * The procedure blocks calling task as long as the character is sucessfully
. * sent to the output message queue.
. *
. * RETURNS:
. * N/A
. *
. */
. void outputChar(char c) {
. * 0000030c <outputChar> stwu r1,-16(r1)
. * 00000310 <outputChar+4> mflr r0
. * 00000314 <outputChar+8> stw r0,20(r1)
. * 00000318 <outputChar+c> stb r3,8(r1)
. msgQSend(msgQIdOutput,&c,1,WAIT_FOREVER,MSG_PRI_NORMAL);
. * 0000031c <outputChar+10> lis r9,4
. * 00000320 <outputChar+14> addi r4,r1,8
. * 00000324 <outputChar+18> li r5,1
. * 00000328 <outputChar+1c> li r6,-1
. * 0000032c <outputChar+20> lwz r3,4(r9)
. * 00000330 <outputChar+24> li r7,0
. * 00000334 <outputChar+28> bl 00000334 <outputChar+28>
. * 00000338 <outputChar+2c> lwz r0,20(r1)
. * 0000033c <outputChar+30> mtlr r0
. * 00000340 <outputChar+34> addi r1,r1,16
. * 00000344 <outputChar+38> blr
. }
.
.
. /*******************************************************************************
. *
. * outputTime - output time (blocking)
. *
. * This routine converts time to string and sends the string to the queue.
. * Format: "hh:mm"; <hours> mod 24, <minutes> mod 60 !!!
. * The procedure blocks calling task as long as the characters are sucessfully
. * sent to the output message queue.
. *
. * RETURNS:
. * N/A
. *
. */
. void outputTime(int hours, int minutes) {
. * 00000348 <outputTime> stwu r1,-8(r1)
. * 0000034c <outputTime+4> mflr r0
. * 00000350 <outputTime+8> stw r0,12(r1)
. * 00000354 <outputTime+c> mr r8,r3
. * 00000358 <outputTime+10> mr r6,r4
. char *msgBuf = "00:00";
. msgBuf[0] = (hours%24/10)+'0';
. * 0000035c <outputTime+14> lis r9,10922
. * 00000360 <outputTime+18> ori r9,r9,43691
. * 00000364 <outputTime+1c> lis r7,26214
. * 00000368 <outputTime+20> ori r7,r7,26215
. * 0000036c <outputTime+24> srawi r0,r8,31
. * 00000370 <outputTime+28> mulhw r9,r8,r9
. msgBuf[1] = (hours%24%10)+'0';
. msgBuf[3] = (minutes%60/10)+'0';
. * 00000374 <outputTime+2c> lis r10,-30584
. * 00000378 <outputTime+30> ori r10,r10,34953
. * 0000037c <outputTime+34> lis r4,20
. msgBuf[4] = (minutes%60%10)+'0';
. msgQSend(msgQIdOutput,msgBuf,5,WAIT_FOREVER,MSG_PRI_NORMAL);
. * 00000380 <outputTime+38> li r5,5
. * 00000384 <outputTime+3c> mulhw r10,r6,r10
. * 00000388 <outputTime+40> srawi r9,r9,2
. * 0000038c <outputTime+44> subf r9,r0,r9
. * 00000390 <outputTime+48> rlwinm r0,r9,1,0,30
. * 00000394 <outputTime+4c> add r0,r0,r9
. * 00000398 <outputTime+50> rlwinm r0,r0,3,0,28
. * 0000039c <outputTime+54> subf r8,r0,r8
. * 000003a0 <outputTime+58> mulhw r11,r8,r7
. * 000003a4 <outputTime+5c> lis r9,4
. * 000003a8 <outputTime+60> srawi r0,r8,31
. * 000003ac <outputTime+64> add r10,r10,r6
. * 000003b0 <outputTime+68> srawi r10,r10,5
. * 000003b4 <outputTime+6c> lwz r3,4(r9)
. * 000003b8 <outputTime+70> srawi r11,r11,2
. * 000003bc <outputTime+74> subf r11,r0,r11
. * 000003c0 <outputTime+78> addi r0,r11,48
. * 000003c4 <outputTime+7c> stb r0,20(r4)
. * 000003c8 <outputTime+80> rlwinm r9,r11,2,0,29
. * 000003cc <outputTime+84> add r9,r9,r11
. * 000003d0 <outputTime+88> rlwinm r9,r9,1,0,30
. * 000003d4 <outputTime+8c> srawi r0,r6,31
. * 000003d8 <outputTime+90> subf r10,r0,r10
. * 000003dc <outputTime+94> rlwinm r0,r10,4,0,27
. * 000003e0 <outputTime+98> subf r0,r10,r0
. * 000003e4 <outputTime+9c> rlwinm r0,r0,2,0,29
. * 000003e8 <outputTime+a0> subf r6,r0,r6
. * 000003ec <outputTime+a4> subf r8,r9,r8
. * 000003f0 <outputTime+a8> mulhw r7,r6,r7
. * 000003f4 <outputTime+ac> addi r8,r8,48
. * 000003f8 <outputTime+b0> addi r4,r4,20
. * 000003fc <outputTime+b4> stb r8,1(r4)
. * 00000400 <outputTime+b8> srawi r0,r6,31
. * 00000404 <outputTime+bc> srawi r7,r7,2
. * 00000408 <outputTime+c0> subf r7,r0,r7
. * 0000040c <outputTime+c4> addi r0,r7,48
. * 00000410 <outputTime+c8> stb r0,3(r4)
. * 00000414 <outputTime+cc> rlwinm r0,r7,2,0,29
. * 00000418 <outputTime+d0> add r0,r0,r7
. * 0000041c <outputTime+d4> rlwinm r0,r0,1,0,30
. * 00000420 <outputTime+d8> subf r6,r0,r6
. * 00000424 <outputTime+dc> addi r6,r6,48
. * 00000428 <outputTime+e0> stb r6,4(r4)
. * 0000042c <outputTime+e4> li r6,-1
. * 00000430 <outputTime+e8> li r7,0
. * 00000434 <outputTime+ec> bl 00000434 <outputTime+ec>
. }
. * 00000438 <outputTime+f0> lwz r0,12(r1)
. * 0000043c <outputTime+f4> mtlr r0
. * 00000440 <outputTime+f8> addi r1,r1,8
. * 00000444 <outputTime+fc> blr
.
.
. /*******************************************************************************
. *
. * outputInteger - output integer (blocking)
. *
. * This routine converts <val> to a string and sends the string to the queue.
. * If the representation is longer than <len> then only <len> least significant
. * digits (without a sign) are printed. If it is shorter than <len> then a proper
. * number of leading spaces is added. Max allowed <len> is equal to 20.
. * The procedure blocks calling task as long as the characters are sucessfully
. * sent to the output message queue.
. *
. * RETURNS:
. * N/A
. *
. */
. void outputInteger (int val, int len) {
. * 00000448 <outputInteger> stwu r1,-56(r1)
. * 0000044c <outputInteger+4> mflr r0
. * 00000450 <outputInteger+8> stw r30,48(r1)
. * 00000454 <outputInteger+c> stw r31,52(r1)
. * 00000458 <outputInteger+10> stw r0,60(r1)
. * 0000045c <outputInteger+14> mr r31,r3
. * 00000460 <outputInteger+18> mr r30,r4
. char msgBuf[20] = " 0";
. * 00000464 <outputInteger+1c> addi r3,r1,24
. * 00000468 <outputInteger+20> lis r4,28
. * 0000046c <outputInteger+24> addi r4,r4,28
. * 00000470 <outputInteger+28> li r5,20
. * 00000474 <outputInteger+2c> crclr 4*cr1+eq
. * 00000478 <outputInteger+30> bl 00000478 <outputInteger+30>
. int i = 20;
. * 0000047c <outputInteger+34> li r11,20
. char neg = FALSE;
. * 00000480 <outputInteger+38> li r7,0
. if (len>20||len<1) {
. * 00000484 <outputInteger+3c> addi r0,r30,-1
. * 00000488 <outputInteger+40> subfic r0,r0,19
. * 0000048c <outputInteger+44> subfe r0,r0,r0
. * 00000490 <outputInteger+48> nand r0,r0,r0
. * 00000494 <outputInteger+4c> not r9,r0
. len = 20;
. }
. if (val<0) {
. * 00000498 <outputInteger+50> cmpwi cr1,r31,0
. * 0000049c <outputInteger+54> andi. r9,r9,20
. * 000004a0 <outputInteger+58> and r0,r30,r0
. * 000004a4 <outputInteger+5c> or r30,r0,r9
. * 000004a8 <outputInteger+60> bge cr1,000004b4 <outputInteger+6c>
. val = -val;
. * 000004ac <outputInteger+64> neg r31,r31
. neg=TRUE;
. * 000004b0 <outputInteger+68> li r7,1
. }
. while (val>0) {
. * 000004b4 <outputInteger+6c> cmpwi cr1,r31,0
. < 000004b8 <outputInteger+70> ble cr1,000004fc <outputInteger+b4>
. * 000004bc <outputInteger+74> lis r8,26214
. * 000004c0 <outputInteger+78> ori r8,r8,26215
. * 000004c4 <outputInteger+7c> addi r10,r1,24
. msgBuf[--i] = '0' + val % 10;
. * 000004c8 <outputInteger+80> mulhw r0,r31,r8
. * 000004cc <outputInteger+84> srawi r9,r31,31
. * 000004d0 <outputInteger+88> srawi r0,r0,2
. * 000004d4 <outputInteger+8c> subf r0,r9,r0
. * 000004d8 <outputInteger+90> rlwinm r9,r0,2,0,29
. * 000004dc <outputInteger+94> add r9,r9,r0
. * 000004e0 <outputInteger+98> rlwinm r9,r9,1,0,30
. * 000004e4 <outputInteger+9c> subf r9,r9,r31
. val = val / 10;
. }
. * 000004e8 <outputInteger+a0> mr. r31,r0
. * 000004ec <outputInteger+a4> addi r11,r11,-1
. * 000004f0 <outputInteger+a8> addi r9,r9,48
. * 000004f4 <outputInteger+ac> stbx r9,r10,r11
. * 000004f8 <outputInteger+b0> bgt 000004c8 <outputInteger+80>
. if (neg) {
. * 000004fc <outputInteger+b4> cmpwi cr1,r7,0
. * 00000500 <outputInteger+b8> beq cr1,00000514 <outputInteger+cc>
. msgBuf[--i] = '-';
. * 00000504 <outputInteger+bc> addi r11,r11,-1
. * 00000508 <outputInteger+c0> li r0,45
. * 0000050c <outputInteger+c4> addi r9,r1,24
. * 00000510 <outputInteger+c8> stbx r0,r9,r11
. }
. msgQSend(msgQIdOutput,&(msgBuf[20-len]),len,WAIT_FOREVER,MSG_PRI_NORMAL);
. * 00000514 <outputInteger+cc> addi r4,r1,44
. * 00000518 <outputInteger+d0> subf r4,r30,r4
. * 0000051c <outputInteger+d4> mr r5,r30
. * 00000520 <outputInteger+d8> lis r9,4
. * 00000524 <outputInteger+dc> li r6,-1
. * 00000528 <outputInteger+e0> lwz r3,4(r9)
. * 0000052c <outputInteger+e4> li r7,0
. * 00000530 <outputInteger+e8> bl 00000530 <outputInteger+e8>
. }
. * 00000534 <outputInteger+ec> lwz r0,60(r1)
. * 00000538 <outputInteger+f0> mtlr r0
. * 0000053c <outputInteger+f4> lwz r30,48(r1)
. * 00000540 <outputInteger+f8> lwz r31,52(r1)
. * 00000544 <outputInteger+fc> addi r1,r1,56
. * 00000548 <outputInteger+100> blr

List of comments:

Id:Comment: