小编Joh*_*ane的帖子

我想在C中创建一个简单的汇编程序.我应该从哪里开始?

我最近一直在努力让自己沉浸在汇编编程的世界中,最终目标是创建自己的编程语言.我希望我的第一个真正的项目是一个用C编写的简单汇编程序,它将能够组装一小部分x86机器语言并创建一个Windows可执行文件.没有宏,没有连接器.只是集会.

在纸面上,它似乎很简单.汇编代码进来,机器代码出来.

但是一旦我想到所有的细节,它就会突然变得非常艰巨.操作系统需要哪些约定?如何对齐数据并计算跳跃?可执行文件的内部甚至是什么样的?

我感到迷茫.我找不到任何关于这个的教程,看看流行汇编程序的源代码并不鼓舞人心(尽管我愿意再试一次).

我从哪里开始?你会怎么做的?有关于这个主题的任何好的教程或文献吗?

c x86 assembly x86-64 low-level

11
推荐指数
2
解决办法
2万
查看次数

迭代数组的简单任务.哪种解决方案效率最高?

最近,我一直在思考一个人可以迭代数组的各种方式,并想知道哪些是最有效(和最低效)的.我写了一个假设的问题和五个可能的解决方案.

问题

给定一个包含多个元素的int数组arr,为每个元素len分配任意数字的最有效方法是42什么?

解决方案0:显而易见

for (unsigned i = 0; i < len; ++i)
    arr[i] = 42;
Run Code Online (Sandbox Code Playgroud)

解决方案1:反向明显

for (unsigned i = len - 1; i >= 0; --i)
    arr[i] = 42;
Run Code Online (Sandbox Code Playgroud)

解决方案2:地址和迭代器

for (unsigned i = 0; i < len; ++i)
{   *arr = 42;
    ++arr;
}
Run Code Online (Sandbox Code Playgroud)

解决方案3:反向地址和迭代器

for (unsigned i = len; i; --i)
{    *arr = 42;
     ++arr;
}
Run Code Online (Sandbox Code Playgroud)

解决方案4:解决疯狂问题

int* end = arr + len;
for (; arr < …
Run Code Online (Sandbox Code Playgroud)

c c++ x86

1
推荐指数
2
解决办法
193
查看次数

如何在不激怒编译器的情况下将指针传递给结构?

我正在尝试使用MinGW 4.7.2编译一个简单的C++程序,但是由于大量的错误和警告而感到沮丧.

/*\ program.h \*/
typedef struct
{   int member0;
    int member1;
    int member2;
    int member3;
} structure;

void function(&structure);
Run Code Online (Sandbox Code Playgroud)
/*\ program.cpp \*/
#include "program.h"

int main(void)
{   structure *instance;
    function(instance);
}

void function(&structure)
{   // nothing
}
Run Code Online (Sandbox Code Playgroud)

function取一个地址structure.指针instance包含structure随后传递给的地址function.

很简单,但编译器并不开心.

g++ program.cpp
In file included from program.cpp:1:0:
program.h:8:14: error: variable or field 'function' declared void
program.h:8:25: error: expected primary-expression before ')' token
program.cpp: In function 'int main()':
program.cpp:5:19: error: 'function' was …
Run Code Online (Sandbox Code Playgroud)

c++ struct mingw structure reference

-1
推荐指数
1
解决办法
175
查看次数

标签 统计

c ×2

c++ ×2

x86 ×2

assembly ×1

low-level ×1

mingw ×1

reference ×1

struct ×1

structure ×1

x86-64 ×1