Articles of assemblée

Tableau d’access défini dans l’assembleur en ligne à partir de C

J’ai un entier déclaré dans Assembler, et je l’utilise en C de la manière suivante: asm( “number: \n” “.long 0xFFFFFFFF \n ); extern int number; int main(){ //do something with number } Maintenant, je veux déclarer un tableau de 32 octets dans Assembler. J’ai essayé ce qui suit: asm( “number: \n” “.long 0xFFFFFFFF \n” “.long […]

Comstackr ASM et C avec ASM pour le débogage

J’ai deux petits fichiers que je veux comstackr dans CMake pour le déboguer avec CLion et GDB principal c int my_strlen(char *); int main() { printf(“Test: %d\n”, my_strlen(“Hello”)); } et j’ai mon fichier ASM qui a un fichier my_strlen [BITS 64] global my_strlen section .text my_strlen: push rbp mov rbp, rsp xor rcx, rcx loop: […]

Impossible de traduire ce code C en MIPS Assembly

Fondamentalement, je dois traduire ce code C ( http://pastebin.com/7EupfQ5n ) en assemblage MIPS. J’ai pris une fente à cela, mais j’ai des problèmes. Ce que j’ai jusqu’à présent est celui-ci ( http://pastebin.com/LpS6Mqr1 ). Mais lorsque je lance le code dans un simulateur, il tourne dans une boucle infinie malgré ce que je mets dans le […]

Pointeurs en assemblée

J’ai des problèmes avec un problème de pratique de mon manuel. Je dois remplir les parties manquantes du code C ci-dessous: int switch3(int *p1, int *p2, int action) { int result = 0; switch(action) { case 1: // Fill in case 2: // Fill in default: // Fill in } return result; } La raison […]

Utilisation de l’assemblage en ligne en C / C ++

J’essaie d’utiliser l’assemblage en ligne … J’ai lu cette page http://www.codeproject.com/KB/cpp/edujini_inline_asm.aspx mais je ne comprends pas les parameters qui transmettent à ma fonction. J’écris un exemple d’écriture en C .. c’est mon en-tête de fonction: write2(char *str, int len){ } Et voici mon code d’assemblage: global write2 write2: push ebp mov ebp, esp mov eax, […]

Comment empêcher l’optimisation de strcpy ()

Je suis un exemple dans le livre Piratage: l’art d’exploiter et j’obtiens des résultats différents du livre. Il semble que la fonction strcpy () de l’exemple soit compilée en une instruction telle que: 0x802384c5 : call 0x80482C4 alors que lorsque je comstack le même programme, il supprime l’appel de la bibliothèque et le remplace par […]

Comment le compilateur c gère-t-il les entiers non signés et signés? Pourquoi le code d’assemblage pour l’opération arithmétique non signée et signée est-il le même?

Je lis le livre: CS-APPe2. C a un type int non signé et signé et, dans la plupart des architectures, utilise l’arithmétique du complément de deux pour implémenter la valeur signée; mais après avoir appris un code d’assemblage, j’ai constaté que très peu d’instructions distinguent entre non signé et signé. Donc ma question est: Est-ce […]

Comment créer du thunk en x64?

J’ai trouvé un bon exemple sur la création de thunk pour la fermeture , mais c’est une version 32 bits: #include #include #include struct env { int x; }; struct __atsortingbute__((packed)) thunk { unsigned char push; struct env * env_addr; unsigned char call; signed long call_offset; unsigned char add_esp[3]; unsigned char ret; }; struct thunk […]

contrainte impossible dans ‘asm’

J’utilise une bibliothèque tierce compilée il y a une semaine. Aujourd’hui, je me suis assis à nouveau au bureau, j’ai poussé à nouveau la construction, puis ma tête a sauté. J’ai été touché par cette erreur: contrainte impossible dans ‘asm’ Le code est: static inline unsigned ROLc(unsigned word, const int i) { asm (“roll %2,%0” […]

Assemblage du registre EAX réinitialisé sans raison

J’ai le code d’assemblage suivant: ; File: strrev.asm ; A subroutine called from C programs. ; Parameters: ssortingng A ; Result: Ssortingng is reversed and returned. SECTION .text global strrev _strrev: nop strrev: push ebp mov ebp, esp ; registers ebx,esi, and edi must be saved if used push ebx push edi xor esi, esi […]