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) 我知道我能得到的文件大小FILE *的fseek,但我有什么仅仅是一个INT FD.
在这种情况下如何获得文件大小?
例如,如何为此准备参数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汇编对我来说已经足够了:)
这条线对我造成了段错误:
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) int main(int argc, char* argv[])
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
可以由 gcc 编译成可执行文件的最短汇编示例是什么?
我遇到过这个例子,但是有太多标签,比如hi_temp:,.data等等,最小版本是什么?
喜欢修改一个CONST int,
我是否可以注册一个特定的函数来处理运行时错误,以便这种操作失败而不是终止应用程序?
struct {
integer a;
struct c b;
...
}
Run Code Online (Sandbox Code Playgroud)
一般来说,gcc如何计算所需的空间?这里有没有人偷看内幕?
void t(){
printf("hello\n");
void s(){
printf("2\n");
}
}
int main(){
t();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我打电话后t(),s应该定义,但似乎并非如此.
它被忽略了吗?