【问题标题】:Using objconv with ld instead of gcc使用 objconv 和 ld 而不是 gcc
【发布时间】:2015-04-21 16:04:25
【问题描述】:

我有一组 C 代码,我需要在 linux 中将其转换为 nasm 64 位。但是,我不能使用任何 C 函数或 printf。有没有办法使用 objconv 来代替使用 BIOS 调用?

// plot_64.c  simple plot of sin(x)
#include <stdio.h>

#define ncol 41
#define nrow 21
int main(int argc, char *srgv[])
{
  char points[nrow][ncol]; // char == byte
  char point = '*';
  char space = ' ';
  long int i, j, k, rcx;
  double af[] = {0.0, 1.0, 0.0, -0.166667,
                 0.0, 0.00833, 0.0, -0.000198};
  long int N = 7;
  double x, y;
  double dx = 0.15708; // 6.2832/40.0

  // clear points to space ' '
  for(i=0; i<nrow; i++)
    for(j=0; j<ncol; j++)
      points[i][j] = space;

  // compute points
  x = -3.14159;
  for(j=0; j<ncol; j++)
  {
    y = af[N]*x + af[N-1]; // horners h5loop
    for(rcx=N-2; rcx>=0; rcx--) y = y*x + af[rcx];
    k = (20.0 - (y+1.0)*10.0); // scale 1.0 to -1.0, 0 to 20
    points[k][j] = point;
    x = x + dx;
  }

  // print points
  for(i=0; i<nrow; i++)
  {
    for(j=0; j<ncol; j++)
      printf("%c", points[i][j]);
    printf("\n");
  }
  return 0;
} // end plot_64.c

【问题讨论】:

    标签: c nasm


    【解决方案1】:

    转换成nasm很简单,只要在gcc上使用合适的参数,就可以输出一个汇编文件了。

    在调用 gcc 之前,修改源文件以调用你自己的函数。将您自己的函数附加到源代码,让您自己的函数执行必要的 BIOS 调用。

    对于浮点数学,简单的替换会很困难。建议在谷歌上搜索这些函数并将这些函数附加到您的源代码中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-09
      • 2012-05-15
      • 1970-01-01
      • 2011-08-10
      • 2019-01-31
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多