View Javadoc

1   package com.tapina.robe.swi.clib.stdio;
2   
3   import com.tapina.robe.runtime.Environment;
4   import com.tapina.robe.runtime.MemoryMap;
5   import com.tapina.robe.swi.clib.Stub;
6   import com.tapina.robe.swi.clib.VarArgs;
7   import com.tapina.robe.swi.clib.stdio.printf.PrintfEngine;
8   
9   /***
10   * This function writes output to stdout under control of the format string in a1.
11   */
12  public class PrintF extends Stub {
13      public void executeStub(Environment environment) {
14          final int[] R = environment.getCpu().R;
15          final MemoryMap memoryMap = environment.getMemoryMap();
16          final String formatString = memoryMap.getString0(R[0]);
17          // NB: varargs are treated as normal arguments (i.e. passed in a1, a2, a3, a4 then stack).
18          PrintfEngine.getInstance().printf(formatString, new VarArgs(environment, 1));
19      }
20  }