小编R__*_*R__的帖子

cltq在装配中做了什么?

0x0000000000400553 <main+59>:   mov    -0x4(%rbp),%eax
0x0000000000400556 <main+62>:   cltq   
0x0000000000400558 <main+64>:   shl    $0x3,%rax
0x000000000040055c <main+68>:   mov    %rax,%rdx
Run Code Online (Sandbox Code Playgroud)

事实上,我的程序很简单:

5   int main(int argc, char *argv[]) { 
6     int i = 0;
7     while(environ[i]) {
8       printf("%s\n", environ[i++]);
9     }
10    return 0;
Run Code Online (Sandbox Code Playgroud)

但是程序集输出很长:

Dump of assembler code for function main:
0x0000000000400518 <main+0>:    push   %rbp
0x0000000000400519 <main+1>:    mov    %rsp,%rbp
0x000000000040051c <main+4>:    sub    $0x20,%rsp
0x0000000000400520 <main+8>:    mov    %edi,-0x14(%rbp)
0x0000000000400523 <main+11>:   mov    %rsi,-0x20(%rbp)
0x0000000000400527 <main+15>:   movl   $0x0,-0x4(%rbp)
0x000000000040052e <main+22>:   jmp    0x400553 <main+59>
0x0000000000400530 <main+24>:   mov    -0x4(%rbp),%eax …
Run Code Online (Sandbox Code Playgroud)

x86 assembly gnu-assembler att

26
推荐指数
4
解决办法
4万
查看次数

什么是stdin的int宏?

stdin是类型的FILE *,

它有一个fd宏吗?

或者我需要自己转换它?

c macros stdin

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

你如何通过fd获得文件大小?

我知道我能得到的文件大小FILE *fseek,但我有什么仅仅是一个INT FD.

在这种情况下如何获得文件大小?

c filesize

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

在汇编中,你如何处理C struct?

例如,如何为此准备参数syscall sys_wait4:

 asmlinkage long sys_wait4(pid_t pid,unsigned int __user *stat_addr, int options, struct rusage __user *ru)
1120 {
Run Code Online (Sandbox Code Playgroud)

如何处理struct rusage装配?

一个hello world例子来处理struct汇编对我来说已经足够了:)

assembly

9
推荐指数
1
解决办法
1万
查看次数

我可以使用gdb的x命令打印内存,但是如果我使用printf,则会出现分段错误

这条线对我造成了段错误:

30              printf("st_name:\t%s\n", &p_str_tab[p->st_name]);
Run Code Online (Sandbox Code Playgroud)

我试图在gdb中追踪它:

(gdb) p p_str_tab[p->st_name]
$11 = 0 '\000'
(gdb) p &p_str_tab[p->st_name]
$12 = 0x2aaaaaab0000 ""
(gdb) x/16s 0x2aaaaaab0000
0x2aaaaaab0000:  ""
0x2aaaaaab0001:  ".symtab"
0x2aaaaaab0009:  ".strtab"
(gdb) call printf("st_name:\t%s\n", 0x2aaaaaab0000)

Program received signal SIGSEGV, Segmentation fault.
0x00000034f4042729 in vfprintf () from /lib64/libc.so.6
The program being debugged was signaled while in a function called from GDB.
GDB remains in the frame where the signal was received.
To change this behavior use "set unwindonsignal on".
Evaluation of the expression containing …
Run Code Online (Sandbox Code Playgroud)

c gdb

6
推荐指数
1
解决办法
1468
查看次数

使用 gcc 编译和运行程序集的最小示例?

int main(int argc, char* argv[])
{
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

可以由 gcc 编译成可执行文件的最短汇编示例是什么?

我遇到过这个例子,但是有太多标签,比如hi_temp:,.data等等,最小版本是什么?

linux assembly x86-64

5
推荐指数
1
解决办法
5924
查看次数

如何捕获C和C++中的运行时错误?

喜欢修改一个CONST int,

我是否可以注册一个特定的函数来处理运行时错误,以便这种操作失败而不是终止应用程序?

c c++ runtime-error

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

gcc如何计算结构所需的空间?

struct {
   integer a;
   struct c b;
   ...
}
Run Code Online (Sandbox Code Playgroud)

一般来说,gcc如何计算所需的空间?这里有没有人偷看内幕?

c gcc struct

4
推荐指数
1
解决办法
480
查看次数

嵌套函数在C中意味着什么?

void t(){
    printf("hello\n");
    void s(){
        printf("2\n");
    }   
}
int main(){
    t();
    return 0;                                                                                                                                 
}
Run Code Online (Sandbox Code Playgroud)

我打电话后t(),s应该定义,但似乎并非如此.

它被忽略了吗?

c syntax

3
推荐指数
1
解决办法
762
查看次数

gcc如何在特定平台上获得每种类型的对齐方式?

它是硬编码到gcc的源代码还是以某种方式以编程方式获取?

gcc alignment

3
推荐指数
1
解决办法
868
查看次数

标签 统计

c ×6

assembly ×3

gcc ×2

alignment ×1

att ×1

c++ ×1

filesize ×1

gdb ×1

gnu-assembler ×1

linux ×1

macros ×1

runtime-error ×1

stdin ×1

struct ×1

syntax ×1

x86 ×1

x86-64 ×1