数据格式字Intel使用"字"(word)来表示16位数据类型32位数据类型则为双字(double words)64位数据类型则为四字(quad words)汇编指令中有很多指令后带一个自负后缀代表操作数的大小比如数传送指令:movb(传送字节) movw(传送字) movl(传送双字)注意浮点类型...
分类:
其他好文 时间:
2015-11-11 23:55:58
阅读次数:
383
[root@localhost ~]# cat 1.s .file "write.s" .section .rodata hello: .string "hello, world!\n" .section .text .global _start _start: movl $4,...
分类:
其他好文 时间:
2015-10-30 20:40:43
阅读次数:
316
第四章处理器体系结构第一节Y86指令集体系结构一、程序员可见的状态存储器Y86程序用虚拟地址来引用存储器位置,硬件和操作系统软件联合起来将虚拟地址翻译成实际或物理地址状态码stat它表明程序执行的总体状态,会指示是正常运行还是出现了某种异常。二、Y86指令Movl类指令irmovl,rrmovl,m...
分类:
其他好文 时间:
2015-10-18 21:24:30
阅读次数:
255
第四章 处理器体系结构第一节 Y86指令集体系结构Y86指令IA32的movl指令分为四种:irmovl,rrmovl,mrmovl,rmmovl与Ia332不同的是前面多了限制位,im,前面字母表示的意思为钱一个操作数传到后一个操作数的缩写※这里的存储器引用方式是简单的基址和偏移量形式,寻址方式不...
分类:
其他好文 时间:
2015-10-18 15:23:37
阅读次数:
198
方案一:(普通版)#pragma comment(linker, "/STACK:102400000,102400000")方案二:(汇编版)const int main_stack = 16;
char my_stack[128<<20];int main() {
__asm__("movl %%esp, (%%eax);\n"::"a"(my_stack):"memory");...
分类:
其他好文 时间:
2015-08-17 21:52:18
阅读次数:
183
完成一个简单的时间片轮转多道程序内核代码重要汇编代码分析 asm volatile(
"movl %1,%%esp\n\t"
"pushl %1\n\t"
"pushl %0\n\t"
"ret\n\t"
"popl %%ebp\n\t"
:
: "c" (task[pid]...
分类:
其他好文 时间:
2015-07-10 11:24:50
阅读次数:
131
直接寻址 movl?address,?%eax 把地址address加载到%eax里 直接寻址,有点像c里面给一个指针变量赋值。 索引寻址 movl?string_start(,?%edi,?1),?%eax 该指令将 地址=(string_start的地址)+(下表 %edi里面的...
分类:
编程语言 时间:
2015-07-05 20:00:57
阅读次数:
239
反汇编一个简单的C程序并分析C 源码:int g(int x)
{
return x+1;
}int f(int x)
{
return g(x);
}int main(void)
{
return f(2) + 3;
}
汇编源码:1 g:
2 pushl %ebp
3 movl %esp, %ebp
4 movl 8(%ebp), %eax
5...
分类:
其他好文 时间:
2015-07-04 09:42:05
阅读次数:
132
来个汇编版的hello world .section?.data
hello:
????.ascii?"hello?world\n"
????hello_len?=?.?-?hello
.section?.text
.global?_start
_start:
????movl?$4,?%eax????????...
分类:
其他好文 时间:
2015-06-30 23:45:51
阅读次数:
341
用3个实例实现将变量a和变量b相乘,得到的值存在result中.简单实例asm表示使用内联汇编, volatile表示不对内联汇编进行优化,避免造成误删.#includeint a = 10;
int b = 20;
int result;int main(){
__asm__ __volatile__(
"movl a, %eax\n\t"...
分类:
其他好文 时间:
2015-06-04 11:56:05
阅读次数:
132