Ir para conteúdo

Eduardo Bittencourt

Membros
  • Total de itens

    34
  • Registro em

  • Última visita

Reputação

10 Good

Dados pessoais

Últimos Visitantes

307 visualizações
  1. Ponteiros em C

    Vlw pelo acréscimo. Ficou muito bom a sua complementação.
  2. Código em ASM com gcc

    Vlw pela dica, abraços!
  3. Ponteiros em C

    É normal isso, kkkk. Fui perceber depois, que você estava entendo inteiro como int, o que é normal, por isso não estávamos nos entendendo. Abraços amigo!
  4. Ponteiros em C

    Acho que na verdade está havendo uma falha de comunicação entre nós. Quando digo inteiro, não quero dizer que o ponteiro tem o tamanho do tipo int, mas sim que o tamanho não é um ponto flutuante, entendeu? Eu sei que em arquiteturas diferentes, tem tamanho distintos. Um ponteiro em arquitetura x86_x64 tem tamanho de um inteiro com modificador de tamanho long long 8 bytes, já em ambientes i386 o ponteiro geralmente tem tamanho de 4 bytes, ambos são inteiros, concorda comigo? Ao utilizar sizeof(*ptr); Está retornando o tamanho do conteúdo para onde o ponteiro está apontando ptr, abraços.
  5. Ponteiros em C

    É isso que estou dizendo, o endereço de memória de um ponteiro sempre vai ter o tamanho de um inteiro. Mas quando você aponta para outro dado, o endereço do dado vai ter o tamanho do tipo apontado, abraços
  6. Ponteiros em C

    Creio eu, que um endereço de memória de um ponteiro tem tamanho de um inteiro, no qual o tamanho pode ser variado. Mas não entendi, o que você quis dizer com tamanho de uma palavra, como assim palavra? E a respeito sobre apontar para char, short, int, long, etc, o tamanho pode variar sim, quando você aponta para um char, você estará reservando apenas 1 byte para aquele endereço de memória. Exemplo: char *teste = "array"; printf("%d", sizeof(*teste)); // Tamanho de 1 byte Ah respeito do código em assembly, eu entendi o que você quis dizer, mt obrigado pelo feedback
  7. Projetos Open Source

    Legal o seu projeto, ficou da hora. Eu fiz um programa simples, que posta sites ownados no zone-h. Tem mais commits do que outra coisa, é a versão beta ainda. https://github.com/WallasC0der/C/blob/master/zone-h.c
  8. Código em ASM com gcc

    Bom, resolvi postar essa dica simples, acho que a maioria aqui conheça, porém deve ter um ou dois que não conheça, enfim. Para gerar código em asm através do gcc usamos a seguinte linha de comando Para 64 bits $ gcc -S masm=intel programa.c Caso queira em 32 bits $ gcc -S masm=intel -m32 programa.c A linhas masm=intel, significa, usar o masm com syntax intel. Um ponto interessante é que com esta técnica, você pode ver as seções de memória do código, e muito outras coisas, claro que são coisas simples. Se realmente prefere desassemblar é recomendável usar o objdump, ou gdb, entre outros #include <stdio.h> long x = 5; int main(void) { char *cons = "teste"; return 0; } Compilei em 64 bits e em 32 bits, e teve diferenças no código, repare; Output em 64 bits $cat teste.s .file "teste.c" .intel_syntax noprefix .globl x; ;variável x é global .data .align 8 .type x, @object .size x, 8; ;tamanho de 8 byte x: .quad 5 .section .rodata .LC0: .string "teste" ;essa string é da seção .rodata .text .globl main ;função main é global, oh não diga .type main, @function main: .LFB0: .cfi_startproc push rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 mov rbp, rsp .cfi_def_cfa_register 6 lea rax, .LC0[rip] mov QWORD PTR -8[rbp], rax mov eax, 0 pop rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size main, .-main .ident "GCC: (Debian 6.3.0-18) 6.3.0 20170516" .section .note.GNU-stack,"",@progbits Output em 32 bits $cat teste.s .file "teste.c" .intel_syntax noprefix .globl x ; variável global .data .align 4 .type x, @object .size x, 4 ; tamanho de 4 byte x: .long 5 .section .rodata .LC0: .string "teste" .text .globl main .type main, @function main: .LFB0: .cfi_startproc push ebp .cfi_def_cfa_offset 8 .cfi_offset 5, -8 mov ebp, esp .cfi_def_cfa_register 5 sub esp, 16 call __x86.get_pc_thunk.ax add eax, OFFSET FLAT:_GLOBAL_OFFSET_TABLE_ lea eax, .LC0@GOTOFF[eax] mov DWORD PTR -4[ebp], eax mov eax, 0 leave .cfi_restore 5 .cfi_def_cfa 4, 4 ret .cfi_endproc .LFE0: .size main, .-main .section .text.__x86.get_pc_thunk.ax,"axG",@progbits,__x86.get_pc_thunk.ax,comdat .globl __x86.get_pc_thunk.ax .hidden __x86.get_pc_thunk.ax .type __x86.get_pc_thunk.ax, @function __x86.get_pc_thunk.ax: .LFB1: .cfi_startproc mov eax, DWORD PTR [esp] ret .cfi_endproc .LFE1: .ident "GCC: (Debian 6.3.0-18) 6.3.0 20170516" .section .note.GNU-stack,"",@progbits
  9. Programa em Assembly

    Vlw pela dica, vou fazer isso , abraços
  10. Programa em Assembly

    Programa simples que fiz em assembly, só faz ler o stdin mesmo, kkkk. Obs: Na label write, era pra eu ter feito uma rotina que usasse como argumento uma string, assim não precisava repetir todo o código da label write na label writex, mas fiz desse jeito mesmo pra não usar a stack ;Author: WallasC0der ; ;montagem ;nasm -f elf32 stdin.asm ;ld -m elf_i386 stdin.o -o stdin section .bss buffer RESB 256 ; reserva 256 bytes size equ $ - buffer ; tamanho do buffer section .data msg db "Digite no stdin", 0ah len equ $ - msg section .text global _start: ;protótipo do write ;ssize_t write(int fd, const void *buf, size_t count); _start: write: mov eax, 4 ; syscall do write mov ebx, 2 ; stdout mov ecx, msg; void *buf mov edx, len; size_t int 0x80 ; executa a syscall ;protótipo do read ;ssize_t read(int fd, void *buf, size_t count); read: mov eax, 3 ; syscall do read mov ebx, 1 ; stdin mov ecx, buffer ; void *buffer mov edx, size ; size_t int 0x80; executa a syscall mov esi, ecx writex: mov eax, 4 mov ebx, 2 mov ecx, esi mov edx, size int 0x80 exit: mov eax, 1 ; syscall do exit int 0x80 ; executa a syscall
  11. IRC, RaidCall

    MenteBinaria
  12. Projetos Open Source

    Eu vi este tópico, e fiquei na dúvida se podia postar projetos neste tópico ou não, porque eu entendi que podia ser uma referência para projetos da equipe mente binária, ou algo do tipo, mas vlw pelo toque,
  13. Projetos Open Source

    Olá portadores dos cromossomos x e y, criei este tópico na intenção que todos os membros publique seus projetos e compartilhe suas idéias. e é isso ae
  14. Open Source

    Blz Mercês, vou fazer isso, abraços.
  15. Open Source

    Seria legal, se existisse um tópico para postar todos os projetos que fossem desenvolvidos pelos os membros do fórum, A sim, ajudaria a disseminar os projetos de cada um.
×