【发布时间】: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
【问题讨论】: